crypto-js解密图片

我在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);
}
阅读 4.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题