我需要解密一些用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));谢谢!
发布于 2018-05-14 18:21:02
你的问题实际上帮助我找到了一个解决方案,加密了一个对象,解密了一个字符串,所以你可以进行替换
另一个可能提供这种类型的错误预估的地方是键,在将键解析为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
})));
}发布于 2019-05-09 14:21:55
JSON object的加解密
节点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))https://stackoverflow.com/questions/47201575
复制相似问题