encryption - Electron - 使用 crypto 或 cryptify 加密文件
问题描述
我是 Electron 和 Node 的新手。我编写了一个应用程序,可以在应用程序中上传和存储多种文件类型。我希望能够加密文件,以便如果有人打开存储目录的目录,它们不会在没有解密的情况下立即读取。
我想要实现的只是能够将 afilepath
和password
加密传递给一个新文件,并使用相同的密码进行解密。
我发现 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 还是仅使用加密就可以更简单地实现这一点?是否可以同时创建一个文件目录?文件可以是任何类型。
解决方案
推荐阅读
- clojure - 无法从 Eclipse 运行 clara rules clojure 程序
- sql - 从 CSV 导入事务:错误:平面文件源 1 未通过预执行阶段并返回错误代码 0xC020200E
- composite-primary-key - 如何在 clickhouse 中为数据库设置复合主键?
- java - Magnolia 6.0 Tomcat 9 禁止访问 /.resources*
- python - 在 conda/MacOS 上使用 pip 安装 mmh3 包
- javascript - 如何删除子数组中的重复项?
- reactjs - React Native 遍历数组对象并计算总和值
- vue.js - 如何在 webpack 中正确注入 app 元素?- 接收 [Vue 警告]:找不到元素:#app
- django - Django使用html按钮下载静态文件
- magento2 - 在管理员处为目录产品当前页面创建新书签