首页 > 解决方案 > Electron - 使用 crypto 或 cryptify 加密文件

问题描述

我是 Electron 和 Node 的新手。我编写了一个应用程序,可以在应用程序中上传和存储多种文件类型。我希望能够加密文件,以便如果有人打开存储目录的目录,它们不会在没有解密的情况下立即读取。

我想要实现的只是能够将 afilepathpassword加密传递给一个新文件,并使用相同的密码进行解密。

我发现 Nodecrypto内置了一个模块,我相信它可以做我想做的事,但我找不到任何简单或最新的例子。许多网站建议使用crypto.createDecipher,但我也读到现在已经贬值了,我应该使用crypto.createDecipheriv?看来我必须使用我不想要/不需要的种子等。

我已经研究过使用其他模块,目前正在尝试将 cryptify作为解决方案。我相信我已经设法加密文件,但似乎无法解密它。这是我的代码 -

const Cryptify = require('cryptify');

加密

ipcMain.handle('encrypt', (event, data) => {
        
    const filePath = 'C:/Users/.../Electron4/encrypt/src/files/dummy.pdf';
    const password = 'Password1_';

    const instance = new Cryptify(filePath, password, '', '', true);
    instance
        .encrypt()
        .then((files) => {
            /* Do stuff */

            fs.writeFile('C:/Users/.../Electron4/encrypt/src/files/dummy.test', files[0], err => {
                if (err) {
                    console.error(err)
                    return
                }
                //file written successfully
            })

        })
        .then(() => instance.decrypt())
        .then((files) => {
            /* Do stuff */
        })
        .catch((e) => console.error(e));

});

解密

ipcMain.handle('decrypt', (event, data) => {

    const filePath = 'C:/Users/.../Electron4/encrypt/src/files/dummy.test';
    const password = 'Password1_';

    const instance = new Cryptify(filePath, password, '', '', true);
    instance
        .encrypt()
        .then((files) => {
            /* Do stuff */
        })
        .then(() => instance.decrypt())
        .then((files) => {
            /* Do stuff */

            fs.writeFile('C:/Users/.../Electron4/encrypt/src/files/dummy3.pdf', files[0], err => {
                if (err) {
                    console.error(err)
                    return
                }
                //file written successfully
            })

        })
        .catch((e) => console.error(e));

});

加密文件的大小比我预期的要大。我以正确的方式接近这个吗?这适用于大文件还是我需要将它们分块?我什至需要 cryptify 还是仅使用加密就可以更简单地实现这一点?是否可以同时创建一个文件目录?文件可以是任何类型。

标签: encryptioncryptographyelectron

解决方案


推荐阅读