如何在 CryptoJS(nodejs/Web 浏览器)中解密 AES 128

Gre*_*ain 1 javascript json cryptography node.js cryptojs

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

我们可以轻松解密“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
Run Code Online (Sandbox Code Playgroud)

我有一个错误,因为 CryptoJS 解密方法使用这样的数组数据:

s {init: function, $super: s, ciphertext: l.WordArray.t.extend.init, key: s, iv: s…}
Run Code Online (Sandbox Code Playgroud)

你能帮我么 ?

非常感谢。

编辑 :

Node.js 输入:{name:"toto", age:"15"}(在 Base64 中使用加密加密)。

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

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

Web 客户端 JS 输入:mfrpKm5k5YtGkX6rp9/Bmz+cCkcz5tiLKQcxmOpDUow=

Web 客户端 JS 输出:{name:"toto", age:"15"}(使用相同的 IV 和 KEY 解密)

Soh*_*ail 6

这对我有用:

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);
Run Code Online (Sandbox Code Playgroud)

希望这是你想做的。这也适用于 Base64 输入。