php decrypt,php openssl_decrypt 解密取代mcrypt_decrypt问题
openssl_decrypt使用的時候第四個參數填寫為OPENSSL_ZERO_PADDING即可解開
$ret = openssl_decrypt('N3fthdRHiCTmj2kyoiUOlw==', 'AES-128-ECB', 'v466vazrnpeng66r',OPENSSL_ZERO_PADDING);
$ret = rtrim($ret, "\0");
var_export($ret);
$ret = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, 'v466vazrnpeng66r', base64_decode('N3fthdRHiCTmj2kyoiUOlw=='), 'ecb');
$ret = rtrim($ret, "\0");
var_export($ret);
為什么要加OPENSSL_ZERO_PADDING,我的理解是mcrypt_decrypt可以解開這個加密串,應該密文采用的填充方式應該是補0填充的,所以openssl解密需要指定OPENSSL_ZERO_PADDING填充方式解密。因為openssl_encrypt中options選項0和1默認采用都是PKCS7填充方式
而OPENSSL_ZERO_PADDING是補0填充。
在openssl_encrypt中參數option的含義
options :
0 : 自動對明文進行 padding, 返回的數據經過 base64 編碼.
1 : OPENSSL_RAW_DATA, 自動對明文進行 padding, 但返回的結果未經過 base64 編碼.
2 : OPENSSL_ZERO_PADDING, 自動對明文進行 0 填充, 返回的結果經過 base64 編碼. 但是, openssl 不推薦 0 填充的方式, 即使選擇此項也不會自動進行 padding, 仍需手動 padding.
總結
以上是生活随笔為你收集整理的php decrypt,php openssl_decrypt 解密取代mcrypt_decrypt问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟登陆手机版新浪微博
- 下一篇: php decrypt,PHP函数第4款