缘由:

由于Mcrypt库从PHP 7.1.0 开始废弃;自 PHP 7.2.0 起,会移到 PECL。

所以之前使用PHP AES加解密的相关函数(mcrypt_encryptmcrypt_decrypt…)在PHP7.1+中都已经废除了,新版PHP中通过OpenSSL库的相关方法来实现AES等加解密。

openssl_encrypt
openssl_decrypt

其实手册上的说明已经非常清楚了,但是函数声明中的options参数的说明让我很困惑,经过实践后整理结论如下

options 说明
0 返回base64 编码后的字符串
OPENSSL_RAW_DATA(1) 返回原始字符串
OPENSSL_ZERO_PADDING(2) 不填充字符串(默认使用PKCS#7填充字符串)

所以之前用mcrypt_encrypt方法加密得到的密文,在新版中只要用openssl_decrypt方法并且使用options=0来解密即可。


参考