2
我有一个openssl_decrypt
函数的问题。mcrypt_decrypt,openssl_decrypt和0x06065064 EVP_DecryptFinal错误
示例代码:
// mcrypt
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
// OpenSSL
$decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
的mcrypt_decrypt
功能工作正常。但openssl_decrypt
返回FALSE
和以下错误:
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
的关键是32个字节长,并且IV 16个字节。
有谁知道错在哪里?
最好不要使用mcrypt的,它是放弃的,并没有在年更新一次,并且不支持标准的PKCS#7(姓PKCS# 5)填充,只有非标准的空填充甚至不能用于二进制数据。 mcrypt有很多优秀的[bug](https://sourceforge.net/p/mcrypt/bugs/)可以追溯到2003年。反而考虑使用[defuse](https://github.com/defuse/php-encryption)它正在维护和正确。 – zaph