javascript - crypto-js aes 无法解密它加密的内容

标签 javascript encryption encoding cryptography cryptojs

您好,我正在尝试使用 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

我的期望是它返回“消息”。我错过了什么?

最佳答案

所有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

关于javascript - crypto-js aes 无法解密它加密的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418178/

相关文章:

asp.net - URL 编码的表单数据无效

javascript - 带有图像描述的模态图像

Javascript:用字符串开头的 x 空格替换 x &nbsp

javascript - 表单提交是同步的还是异步的?

php - 使用 SSL 远程连接时出现 MySQL 错误

javascript - CryptoJS 和 Pycrypto 协同工作

vb.net - VB .net 输出中的 AES 加密与网站不匹配

objective-c - NSValue/NSNumber 创建给定的编码/objCType

javascript - WCF 问题上的 CORS

encoding - 是否可以对 base64 编码消息的一部分进行 base64 解码