Crypto-js AES无法解密其加密的内容

3
你好,我正在尝试使用crypto-js解密一个aes加密字符串,但似乎无法正常工作。
我正在使用:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
    var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

    var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
</script>

但是我的结果是:
encrypted: U2FsdGVkX19whKq54yOQt3l1erbtEtn/M0qJjAH+E/E=
decrypted: 4d657373616765

我期望它返回“Message”。我错过了什么吗?

3DES也不起作用。 - Kingalione
不要在新的工作中使用3DES,应该使用AES。 - zaph
1个回答

8
所有 CryptoJS.<blockcipher>.decrypt() 函数的返回类型都是 WordArray,它是 CryptoJS 中二进制数据的本地表示形式。当你强制打印它(自动调用 toString()),它包含的二进制数据将被十六进制编码。
如果你想要不同的编码方式,则需要指定它。以下是一些示例:
console.log(decrypted.toString()); // Hex encoded
console.log(decrypted.toString(CryptoJS.enc.Hex)); // Hex encoded
console.log(CryptoJS.enc.Hex.stringify(decrypted)); // Hex encoded

console.log(decrypted.toString(CryptoJS.enc.Utf8)); // UTF-8 encoded
console.log(CryptoJS.enc.Utf8.stringify(decrypted)); // UTF-8 encoded

console.log(decrypted.toString(CryptoJS.enc.Base64)); // Base64 encoded
console.log(CryptoJS.enc.Base64.stringify(decrypted)); // Base64 encoded

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接