加密js加密字符串在php中不解密
我使用下面的js代码来加密字符串加密js加密字符串在php中不解密,php,encryption,aes,cryptojs,Php,Encryption,Aes,Cryptojs,我使用下面的js代码来加密字符串 var text = 'should be decrypted!'; var key = 'HighlySecretKeyForJsEncryption!!'; var encrypted = CryptoJS.AES.encrypt(text, key); console.log(encrypted.toString()); 输出:U2FsdGVkX19vf+s6/+eB8A+3iKFCl1A0e+oe0BSbcMVGxb64FL35Q3CB/LZNu4ng
var text = 'should be decrypted!';
var key = 'HighlySecretKeyForJsEncryption!!';
var encrypted = CryptoJS.AES.encrypt(text, key);
console.log(encrypted.toString());
输出:U2FsdGVkX19vf+s6/+eB8A+3iKFCl1A0e+oe0BSbcMVGxb64FL35Q3CB/LZNu4ng
这就是我在php中解密的结果
function decrypt($toDecrypt) {
$key = "HighlySecretKeyForJsEncryption!!";
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$toDecrypt = base64_decode($toDecrypt);
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, substr($toDecrypt, $iv_size), MCRYPT_MODE_CBC, substr($toDecrypt, 0, $iv_size)));
}
但这不起作用,它给了我垃圾字符串。来自:
CryptoJS支持AES-128、AES-192和AES-256。它将选择
根据传入的密钥的大小而变化。如果使用密码短语,
然后它将生成一个256位密钥
在解密php端时,可能需要传递常量MCRYPT_RIJNDAEL_256
有关php中AES加密/解密选项的更多信息:base64_解码($toDecrypt);base64编码在哪里?如果也删除base64,则不工作?可能很有趣@是的,就是这样。您现在可以投票关闭。使用MCRYPT_RIJNDAEL_256不走运!CryptoJS仅支持AES,但
RIJNDAEL_256
不再是AES。只有RIJNDAEL_128
与AES兼容。请注意,声明称高级加密标准(AES)也称为RIJNDAEL
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");