加密字符串加密字符串不在PHP解密

时间:2016-05-30 11:14:42

标签: 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

这就是我在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)));
}

但这不起作用,它给了我垃圾串。

1 个答案:

答案 0 :(得分:-1)

来自docs

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
  

CryptoJS支持AES-128,AES-192和AES-256。它会挑选   根据您传入的密钥大小的变体。如果您使用密码,   然后它将生成一个256位密钥。

在解密php-side

时,你可能需要传递常量MCRYPT_RIJNDAEL_256

更多关于php中的AES加密/解密:https://stackoverflow.com/a/3422787/4499267