使用openssl_encrypt方法替代mcrypt_encrypt做AES加密
2017-08-02 19:20
519 查看
mcrypt_encrypt在php7.1中已被废弃,需要使用openssl_encrypt代替
//mdecrypt_generic版 public function encrypt_cbc($str,$iv,$encryptKey) { $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $iv); mcrypt_generic_init($module, $encryptKey, $iv); //加上以下三行,可以与encrypt_openssl得到一致的加密结果,但是加密结果用mdecrypt_generic解密与decrypt_openssl结果不一致 $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $pad = $block - (strlen($str) % $block); $str .= str_repeat(chr($pad), $pad); $encrypted = mcrypt_generic($module, $str); return base64_encode($encrypted); } //mdecrypt_generic版解密 function decrypt_cbc($str,$iv,$encryptKey) { $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $iv); mcrypt_generic_init($module, $encryptKey, $iv); return mdecrypt_generic($module, base64_decode($str)); } //mcrypt_encrypt版加密 public function encrypt_hezuo($str,$localIV,$encryptKey) { //加上以下三行,可以与encrypt_openssl得到一致的加密结果,但是加密结果用mcrypt_decrypt解密与decrypt_openssl结果不一致 $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $pad = $block - (strlen($str) % $block); $str .= str_repeat(chr($pad), $pad); return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryptKey, $str, MCRYPT_MODE_CBC, $localIV)); } //mcrypt_decrypt版解密 public function decrypt_hezuo($str,$localIV,$encryptKey) { return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $encryptKey, base64_decode($str), MCRYPT_MODE_CBC, $localIV); } //encrypt_openssl新版加密 function encrypt_openssl($str,$localIV,$encryptKey) { return openssl_encrypt($str, 'AES-128-CBC',$encryptKey,0,$localIV); } //decrypt_openssl新版解密 function decrypt_openssl($str,$localIV,$encryptKey) { return openssl_decrypt($str, 'AES-128-CBC', $encryptKey, 0, $localIV); }
相关文章推荐
- [原创]AES加密类使用方法
- AES加密解密(使用php扩展mcrypt实现AES加密)
- 使用php扩展mcrypt实现AES加密
- 使用AES加密解密在windows上使用没有问题,在Linux(Centos6.5)上出现解密失败的解决方法
- 使用 openssl 的AES 加密
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- Linux下使用openssl的AES加密-ECB模式
- openssl之aes加密(AES_cbc_encrypt 与 AES_encrypt 的编程案例)
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- PHP OpenSSL&Mcrypt实现AES加密
- AES加密和解密——使用openssl编程
- Linux下使用openssl的AES加密-CBC模式
- php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
- 使用openssl 生成AES加密并且对加密结果进行base64加密
- openssl之aes加密(AES_cbc_encrypt 与 AES_encrypt 的编程案例)
- 使用php缺少加密扩展mcrypt等相关问题的一些解决方法
- openssl之aes加密(源码分析 AES_encrypt 与 AES_cbc_encrypt ,加密模式)
- AES加密类使用方法
- AES加密和解密(使用openssl编程)