如何在node.js中加密并在浏览器javascript中解密

时间:2013-07-29 20:35:05

标签: node.js

我有一个简单的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>

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

1 个答案:

答案 0 :(得分:2)

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

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