如何解密CryptoJS中的AES 128(nodejs / web浏览器)

我正在使用一个nodejs服务器,并且我使用encryption节点模块成功地在Base64中encryption/解密(使用IV&Key)一个json。

然而,当我发送与我的AES 128 CTR json发射行动到一个web客户端,我收到正确的我的json base64数据encryption,但我的问题是当我不想解密这个。

在CryptoJS文档中,我find了这样一个例子:

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客户端中的CryptoJSencryption的。 但我的问题是,我想解密一个没有使用CryptoJSencryption系统的数据。

我想要做这样的事情:

 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.jsinput:{name:“toto”,年龄:“15”}(用Base64中的encryption器encryption)。

Node.js输出:mfrpKm5k5YtGkX6rp9 / Bmz + cCkcz5tiLKQcxmOpDUow =

发送输出将socket.io发送到Web客户端。

Web客户端JSinput:mfrpKm5k5YtGkX6rp9 / Bmz + cCkcz5tiLKQcxmOpDUow =

Web客户端JS输出:{名称:“toto”,年龄:“15”}(使用相同的IV&KEY解密)

这对我工作:

 var CryptoJS = require("crypto-js"); var data = JSON.stringify({abc: 'xyz'}); var encrypted = CryptoJS.AES.encrypt(data, "my-secret"); console.log(encrypted.toString()); var decrypted = CryptoJS.AES.decrypt(encrypted, "my-secret"); var object = JSON.parse(decrypted.toString(CryptoJS.enc.Utf8)); console.log(object); console.log(object.abc); 

希望这是你想要做的。 这也应该适用于Base64input。