我需要解密用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));
谢谢!
答案 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))