我的openssl_decrypt
功能存在问题。
示例代码:
// 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
并出现以下错误:
错误:06065064:数字信封例程:EVP_DecryptFinal_ex:解密错误
密钥长度为32个字节,iv为16个字节。
有谁知道什么是错的?
答案 0 :(得分:4)
问题的解决方案是OPENSSL_RAW_DATA
和OPENSSL_ZERO_PADDING
:
$decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);