【发布时间】:2019-12-05 17:04:43
【问题描述】:
我有一个使用 crypto-Js AES 的应用。模拟工作代码为:
var ciphertext = CryptoJS.AES.encrypt('My_message', 'My_secret_key');
console.log(ciphertext.toString());
答案是:
U2FsdGVkX1/Dd3uAr/mdw5lVoBvq0UX5LHnNoX24JAM=
当我尝试在服务器端重现它时,我永远不会得到相同的答案:
$passphrase='My_secret_key';
$value='My_message';
$salt = openssl_random_pseudo_bytes(8);
$salt ='';
$salted = '';
$dx = '';
while (strlen($salted) < 48) {
$dx = md5($dx.$passphrase.$salt, true);
$salted .= $dx;
}
$key = substr($salted, 0, 32);
$iv = substr($salted, 32,16);
$encrypted_data = openssl_encrypt($value, 'aes-256-cbc', $key, true, $iv);
echo base64_encode($encrypted_data);
服务器端答案:
3jSTl1yR55lfTbz7f0o3Yw==
我必须错过一些东西,但不能指出什么。当地的一面不能碰。 欢迎所有帮助
【问题讨论】:
标签: javascript php cryptography aes