php decrypt,php openssl_decrypt 解密取代mcrypt_decrypt问题
openssl_decrypt使用的時(shí)候第四個(gè)參數(shù)填寫(xiě)為OPENSSL_ZERO_PADDING即可解開(kāi)
$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可以解開(kāi)這個(gè)加密串,應(yīng)該密文采用的填充方式應(yīng)該是補(bǔ)0填充的,所以openssl解密需要指定OPENSSL_ZERO_PADDING填充方式解密。因?yàn)閛penssl_encrypt中options選項(xiàng)0和1默認(rèn)采用都是PKCS7填充方式
而OPENSSL_ZERO_PADDING是補(bǔ)0填充。
在openssl_encrypt中參數(shù)option的含義
options :
0 : 自動(dòng)對(duì)明文進(jìn)行 padding, 返回的數(shù)據(jù)經(jīng)過(guò) base64 編碼.
1 : OPENSSL_RAW_DATA, 自動(dòng)對(duì)明文進(jìn)行 padding, 但返回的結(jié)果未經(jīng)過(guò) base64 編碼.
2 : OPENSSL_ZERO_PADDING, 自動(dòng)對(duì)明文進(jìn)行 0 填充, 返回的結(jié)果經(jīng)過(guò) base64 編碼. 但是, openssl 不推薦 0 填充的方式, 即使選擇此項(xiàng)也不會(huì)自動(dòng)進(jìn)行 padding, 仍需手動(dòng) padding.
總結(jié)
以上是生活随笔為你收集整理的php decrypt,php openssl_decrypt 解密取代mcrypt_decrypt问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 模拟登陆手机版新浪微博
- 下一篇: python seek_关于python