如何解密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。