Une brève discussion sur l'utilisation d'Aeses pour le cryptage en PHP (avec code)

青灯夜游
Libérer: 2023-04-09 18:58:01
avant
3510 Les gens l'ont consulté

Une brève discussion sur l'utilisation d'Aeses pour le cryptage en PHP (avec code)

[Apprentissage recommandé : "Tutoriel vidéo PHP"]

Dans le projet, notamment côté PC, nous retournerons un identifiant à le front-end pour déterminer si l'utilisateur est connecté. La plupart de cet identifiant est l'identifiant de l'utilisateur

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

Cependant, il y a un gros inconvénient ici, c'est-à-dire cette valeur. peut être modifié. , si je modifie cette valeur, je peux obtenir toutes les informations de l'utilisateur modifié, comme c'est effrayant !

Utilisons donc aes pour le chiffrement aujourd'hui

<?php
namespace app\api\controller;

/**
 * aes 加密 解密类库
 * Class Aes
 * @package app\common\lib
 */
class Aes {

    private $key = null;

    /**
     *
     * @param $key 		密钥
     * @return String
     */
    public function __construct() {
        // 需要小伙伴在配置文件app.php中定义aeskey
        $this->key = &#39;1234567891112121&#39;;
    }

    /**
     * 加密
     * @param String input 加密的字符串
     * @param String key   解密的key
     * @return HexString
     */
    public function encrypt($input = &#39;&#39;) {
        $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $input = $this->pkcs5_pad($input, $size);
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, &#39;&#39;, MCRYPT_MODE_ECB, &#39;&#39;);
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $this->key, $iv);

        $data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data = base64_encode($data);

        return $data;

    }
    /**
     * 填充方式 pkcs5
     * @param String text 		 原始字符串
     * @param String blocksize   加密长度
     * @return String
     */
    private function pkcs5_pad($text, $blocksize) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }

    /**
     * 解密
     * @param String input 解密的字符串
     * @param String key   解密的key
     * @return String
     */
    public function decrypt($sStr) {
        $decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$this->key,base64_decode($sStr), MCRYPT_MODE_ECB);
        $dec_s = strlen($decrypted);
        $padding = ord($decrypted[$dec_s-1]);
        $decrypted = substr($decrypted, 0, -$padding);

        return $decrypted;
    }

}
Copier après la connexion

Il s'agit d'une classe d'outils aes. Notez que cette valeur doit être modifiée par nous-mêmes, et elle est de 16 bits

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

De cette façon, notre utilisateur renverra l'identifiant au front-end lors de la connexion

Tout d'abord, dans le contrôle L'implémenteur est introduit

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

puis instancié

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

Après le L'utilisateur se connecte avec succès, nous chiffrons cette valeur et la renvoyons au front-end

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

Ce u_id est la valeur cryptée

Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

Ensuite, nous définissons ces deux méthodes dans le fichier de commentaires, ces deux méthodes consistent à traiter uniformément les paramètres, portons donc un jugement ici. Toute interface qui utilise l'ID utilisateur peut décrypter l'ID utilisateur

<.>Une brève discussion sur lutilisation dAeses pour le cryptage en PHP (avec code)

Plus de programmation Pour des connaissances connexes, veuillez visiter :

Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!