3

我有一个简单的 nodeJS 程序来加密明文:

var crypto = require("crypto");

var compatEnc = crypto.createCipher("aes-256-cbc", "password");
compatCrypted = compatEnc.update("Message", "utf8", "hex");
compatCrypted += compatEnc.final("hex");
console.log(compatCrypted);
// 0293cf0bdf5323cff809ba406ffc8283

我尝试在浏览器上解密 0293cf0bdf5323cff809ba406ffc8283

<!doctype html>
<html>
  <body>
    <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
    <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/core-min.js"></script>

    <script>

    var nosalt = CryptoJS.lib.WordArray.random(0);

    // { salt : null } will generate random salt
    var enc = CryptoJS.AES.decrypt("0293cf0bdf5323cff809ba406ffc8283", "password",
    { salt: nosalt });

    console.log(CryptoJS.enc.Utf8.stringify(enc));

    </script>
  </body>
</html>

输出为空白。你能告诉我我的解密代码有什么问题吗?谢谢。

4

1 回答 1

2

CryptoJS不知道您的加密文本是十六进制编码的。

首先使用将其转换为 WordArray CryptoJS.enc.Hex.parse(...);

于 2013-07-29T21:50:59.467 回答