【问题标题】:crypto-js aes can't decrypt what it encryptedcrypto-js aes 无法解密它加密的内容
【发布时间】:2023-03-17 10:03:01
【问题描述】:

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

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

【问题讨论】:

  • 3DES 也不起作用
  • 不要在新工作中使用 3DES,使用 AES。

标签: javascript encryption encoding cryptography cryptojs


【解决方案1】:

所有CryptoJS.&lt;blockcipher&gt;.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2019-01-16
    • 2014-02-06
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2013-08-16
    相关资源
    最近更新 更多