2016-05-31 5 views
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と、次のエラー:キーが16バイト32バイト長およびiv

error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

です。

何が間違っているのか分かりますか?

+0

それはmcryptのを使用するのが最善ではありません、それはアバンダンあり、年間で更新されていないと、標準PKCS#7(旧姓のPKCSの#をサポートしていません。 5)パディング、バイナリデータでも使用できない非標準のヌルパディングのみ。 mcryptには、2003年にさかのぼる多くの傑出したバグ(https://sourceforge.net/p/mcrypt/bugs/)がありました。代わりに、[defuse](https://github.com/defuse/php-encryption)それは維持されており、正しいです。 – zaph

答えて

4

問題を解決するには、OPENSSL_RAW_DATAOPENSSL_ZERO_PADDINGです:

$decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv); 
+0

絶対ライフセーバー。 –

関連する問題