CryptoJS解密对象

时间:2017-11-09 12:13:17

标签: javascript cryptojs

我需要解密用CryptoJS加密的东西。我有用于加密的函数,加密对象的结构和用于加密加密的数据,但我需要知道该对象的一些值。

功能是:

var c = CryptoJS.enc.Utf8.parse(g.slice(0, 16));
var d = CryptoJS.AES.encrypt(JSON.stringify(collectData), c, {
    iv: c,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
}).toString()

稍后,对加密变量应用以下内容:

d.toString().replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '*');

我尝试了这个,但我无法恢复对象:

var decrypted = CryptoJS.AES.decrypt(coord, key, {
iv: key,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7

} );

console.log('decrypted clean:\n' + decrypted);
console.log('decrypted JSON.stringify():\n'+ JSON.stringify(decrypted));

谢谢!

2 个答案:

答案 0 :(得分:2)

嘿,您的问题实际上帮助我找到解决方案,加密接收对象,解密接收字符串,这样您就可以进行替换

另一个可以提供这种类型的errpr的地方是关键,当解析Utf8的密钥时,确保密钥正好是16个字符,你可以添加空值,添加字符串的结尾,以确保它足够长,可以附加在解析之前将'/ u0000'添加到字符串

encrypt(data) {
return CryptoJS.AES.encrypt(JSON.stringify(data), this.secret,
 {
    keySize: 128 / 8,
    iv: this.secret,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  }).toString();
}

decrypt(data) {
return JSON.parse(CryptoJS.enc.Utf8.stringify(CryptoJS.AES.decrypt(data,  this.secret, 
{
    keySize: 128 / 8,
    iv: this.secret,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })));
}

答案 1 :(得分:0)

JSON对象的加密和解密

Node JS

var CryptoJS = require('node-cryptojs-aes').CryptoJS;

var data = {
  "glossary": {
  "title": "example glossary",
  }
}

var cip = CryptoJS.AES.encrypt(JSON.stringify(data), "pass").toString();
console.log("Encrypted data = " + cip);

在浏览器端- HTML CDN-https://cdn.jsdelivr.net/npm/crypto-js@3.1.9-1/crypto-js.js

var decrypted =     CryptoJS.AES.decrypt('U2FsdGVkX1/ps2tRPpM+5elyGhaT7zpp3YL45esS57GmSLoCkhcRdJDBGPUy    uvt0tf4CY6lW2+kugXocBQkc6A==', "pass");
    data = CryptoJS.enc.Utf8.stringify(decrypted)
    console.log("decrypted", JSON.parse(data))