我在electron-vue中有个加密并解密图片的逻辑,逻辑是这样:读取从服务器下载到本地的一个加密后的图片,然后使用crypto-js的AES进行解密。目前一直解密不成功,我在本地写了个demo,前端自己加密后的图片也解密不成功,但如果只是将加密后形成的字符串保存在内存中,然后对其解密,却可以解密成功。
求解密图片哪里出问题了?
代码如下:
async encrypt() {
const eKey = '123';
const filedir = '/Users/test/Documents/data/old.jpg';
const c = fs.readFileSync(filedir);
const data = new Buffer(c).toString('base64');
let encrypted = CryptoJS.AES.encrypt(data, eKey).toString();
this.mydata = encrypted;
fs.writeFile('hao.jpg', encrypted, function (err) {
if (err) {
console.log(err);
}
else {
console.log('保存成功!');
}
});
},
decrypt() {
const eKey = '123';
// 读取加密后的图片
const filedir = '/Users/test/Documents/data/hao.jpg';
const c = fs.readFileSync(filedir);
const data = new Buffer(c).toString('base64');
// let base64 = CryptoJS.AES.decrypt(this.mydata, eKey).toString(CryptoJS.enc.Utf8);
// let base64 = CryptoJS.AES.decrypt(data, eKey).toString(CryptoJS.enc.Utf8);
let decrypted = CryptoJS.AES.decrypt(data, eKey);
let base64 = new Buffer(decrypted.words).toString('base64');
let img = new Image();
img.src = 'data:image/jpeg;base64,' + base64;
img.style.height = '600px';
img.style.width = '600px';
document.body.append(img);
}