Aes 加密
程序员文章站
2022-10-04 19:25:05
在写app接口的时候,用到AES加解密,关于这块有点陌生,稍微了解了一下,这个是ECB加密,每次加密一样,更安全的需要CBC。 ......
在写app接口的时候,用到AES加解密,关于这块有点陌生,稍微了解了一下,这个是ECB加密,每次加密一样,更安全的需要CBC。
namespace app\common\lib; class Aes { /** * 对加密的数据进行加密 * @param $request * @return string */ public function aesEncryptRequest($request) { $res = $this->encryptPass($request,config('app.aes_key')); return $res; } /** * 加密 * @param array $request * @param string $key * @return string */ private function encryptPass($request,$key='') { $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB); $input =$this->pkcs5_pad($request,$size); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND); mcrypt_generic_init($td,$key,$iv); $data = mcrypt_generic($td,$input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return $data; } //填充 private function pkcs5_pad($text,$blockSize) { $pad = $blockSize - (strlen($text)%$blockSize); return $text.str_repeat(chr($pad),$pad); } /** * 对数据进行AES解密 * @param $data * @return bool|string */ public function aesDecryptRequest($data) { $res = $this->decryptPass($data,config('app.aes_key')); return $res; } /** * 解密 * @param $data * @param $key * @return bool|string */ private function decryptPass($data,$key) { $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key, base64_decode($data), MCRYPT_MODE_ECB); $dec_s = strlen($decrypted); $padding = ord($decrypted[$dec_s-1]); $decrypted = substr($decrypted,0,-$padding); return $decrypted; } }
下一篇: 使用html+css+js实现简易计算器