mcrypt_decrypt,openssl_decrypt和0x06065064 EVP_DecryptFinal错误

sch*_*ter 2 php openssl mcrypt

我的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);
Run Code Online (Sandbox Code Playgroud)

mcrypt_decrypt功能工作正常。但是openssl_decrypt返回FALSE并出现以下错误:

错误:06065064:数字信封例程:EVP_DecryptFinal_ex:错误解密

密钥的长度为32个字节,iv的长度为16个字节。

有人知道怎么了吗?

sch*_*ter 5

该问题的解决方案是OPENSSL_RAW_DATAOPENSSL_ZERO_PADDING

$decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
Run Code Online (Sandbox Code Playgroud)