Maison >développement back-end >tutoriel php >Une brève discussion sur l'utilisation d'Aeses pour le cryptage en PHP (avec code)

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

青灯夜游
青灯夜游avant
2021-03-01 17:45:403535parcourir

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;
    }

}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer