【发布时间】:2015-09-16 02:20:59
【问题描述】:
我正在尝试将 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);
在我尝试过的 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");
在 Javascript 中解密工作正常,但是当我执行 PHP 时,它给了我奇怪的字符。
【问题讨论】:
-
定义“奇怪的字符”.
-
任何不是实际输出的东西。
-
PHP 使用 ASCII,而 Javascript 使用 UTF-8。不同的编码,不是吗?
-
echo $dec;这说明了什么? -
jsº—àžd^¶Ï—6OÀÆúË¥îFTqó\°ª=»±Ê%è»5eÝq!M
标签: javascript php encryption aes encryption-symmetric