【发布时间】:2015-04-19 10:32:09
【问题描述】:
我正在使用 nodejs 服务器,并且我使用加密节点模块成功加密/解密(使用 IV 和密钥)Base64 中的 json。
但是,当我使用我的 AES 128 CTR json 向 Web 客户端发送一个发出操作时,我正确收到了我的带有 base64 数据加密的 json,但我的问题是当我不想解密它时。
在 CryptoJS 文档中,我找到了一个这样的示例:
var text = "Hello world";
var key = CryptoJS.enc.Base64.parse("myKey");
var iv = CryptoJS.enc.Base64.parse("myIv");
var encrypted = CryptoJS.AES.encrypt(text, key, {iv: iv});
console.log(encrypted); // print something like that s {init: function, $super: s, ciphertext: l.WordArray.t.extend.init, key: s, iv: s…}
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {iv: iv});
console.log(decrypted.toString(CryptoJS.enc.Utf8)); // print Hello world
我们可以轻松解密“Hello world”,因为它是由我的 Web 客户端中的 CryptoJS 加密的。但我的问题是我想解密一个没有使用 CryptoJS 加密系统的数据。
我想做这样的事情:
var text = "myJsonEncryptedInBase64";
var key = CryptoJS.enc.Base64.parse("myKey");
var iv = CryptoJS.enc.Base64.parse("myIv");
var decrypted = CryptoJS.AES.decrypt(text, key, {iv: iv});
console.log(decrypted.toString(CryptoJS.enc.Utf8)); //print my decrypted json
我遇到了一个错误,因为 CryptoJS 解密方法使用这样的数组数据:
s {init: function, $super: s, ciphertext: l.WordArray.t.extend.init, key: s, iv: s…}
你能帮帮我吗?
非常感谢。
编辑:
Node.js 输入:{name:"toto", age:"15"}(使用 Base64 加密)。
Node.js 输出:mfrpKm5k5YtGkX6rp9/Bmz+cCkcz5tiLKQcxmOpDUow=
向 web 客户端发送输出 throw socket.io。
Web客户端JS输入:mfrpKm5k5YtGkX6rp9/Bmz+cCkcz5tiLKQcxmOpDUow=
Web 客户端 JS 输出:{name:"toto", age:"15"}(使用相同的 IV & KEY 解密)
【问题讨论】:
-
CryptoJS默认使用CBC模式,所以如果要使用CTR,需要在解密的时候设置这个选项。你能展示示例输入和预期输出吗?
-
@ArtjomB。我的错,我确实在使用“aes-128-cbc”算法。例如,我的节点服务器 {name:"toto", age:"15"} 中有一个 json,我使用 crypto 在 Base64 中加密我的 json。我想用 CryptoJS 解密方法在我的网站上解密它。
标签: javascript json node.js cryptography cryptojs