Abu*_*nat 1 javascript php encryption aes encryption-symmetric
我正在尝试将AES解密函数从JavaScript转换为PHP脚本.忽略缩进以便于阅读.
var enc = 'EK/tvL3RsjOY1j82ILXv7W10bEU83JeaiBhlLmcZIrk=';
var key = 'FSHcT+sfRO/siok2ooweuA==' ;
var y = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(enc)},
CryptoJS.enc.Base64.parse(key),
{iv: CryptoJS.enc.Hex.parse("2323232323232323")});
var dec = y.toString(CryptoJS.enc.Utf8);
Run Code Online (Sandbox Code Playgroud)
在PHP中我试过了
$iv = mcrypt_create_iv(16, '2323232323232323');
$enc = 'EK/tvL3RsjOY1j82ILXv7W10bEU83JeaiBhlLmcZIrk=';
$key = 'FSHcT+sfRO/siok2ooweuA==' ;
$dec = rtrim((mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $enc, MCRYPT_MODE_CBC, $iv)), "\0\3");
Run Code Online (Sandbox Code Playgroud)
在Javascript解密工作正常,但当我执行PHP它给我奇怪的字符.
rtrim()暴露你的应用程序填充oracle攻击,如果你遵循加密然后MAC构造,这不会是一个问题.$iv = mcrypt_create_iv(16, '00000000000000000000000000000000');
Run Code Online (Sandbox Code Playgroud)
这不是如何使用这个功能.
string mcrypt_create_iv(int $length, int $source);
Run Code Online (Sandbox Code Playgroud)
例如:mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);将从中生成16个字节的随机数据/dev/urandom.看起来你想str_repeat("\0", 16)在这里,但正如我上面所说,这是一个可怕的想法.
你也没有base64_decode()钥匙.
我真的希望你没有在任何地方部署这个代码.
推荐阅读:编写加密代码!不要发布它!作者:Talyor Hornby.
此外,如果你可以避免使用mcrypt,你会发现自己更快乐.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |