crypto-js解密图片

发布于 2022-09-11 20:29:23 字数 1355 浏览 45 评论 0

我在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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文