我有一个电子应用程序,可将数据持久保存在存储在我的机器中的SQLite数据库中。我已经完成了CRUD操作的所有设置,并且该应用程序运行正常。现在,我需要加密SQLite数据库文件。我在网上搜索解决方案,但所有解决方案都是针对在Electron内部解密的预加密数据库。
要求是,用户将提供密码,应用程序将使用该密码来加密数据库文件,然后用户将提供密码以解密并执行CRUD操作
有什么想法要实现吗?
附言::我已经检查了SQLCipher文档,但没有找到所需的文件。到目前为止,我正在使用 sqlite3 节点模块执行CRUD
编辑1 :我尝试使用sqlite-cipher模块,并且能够在单独的js文件中加密数据库。但是,当我将其与电子ipcMain集成在一起时,由于内存消耗很高,该应用程序将关闭。 有什么建议么???
答案 0 :(得分:2)
如果您使用 SQLite,最好的选择是使用 SQLCipher。问题是您必须编译新的二进制文件才能工作,并且节点的 SQLite 和 SQLcipher 版本存在一些限制。
您可以使用这个包:https://github.com/journeyapps/node-sqlcipher
或手动编译,这里有一个示例 https://gist.github.com/aguynamedben/14253e34bc7e0a881d99c8e45eb45a47
答案 1 :(得分:1)
电子应用程序中的加密是一件棘手的事情。 这是因为它会给您带来虚假的安全感。
您可能会加密本地数据库,但是使用电子可以很容易地将其解密回来,也许这根本不值得吗? 获取电子应用程序的来源非常容易。缩小仅起到一点作用,但这并不是真正的保护。
您可以采用多种方法,但具体情况因情况而异。 需要回答的问题是:
看看源代码访问讨论:
https://github.com/electron/electron/issues/3041
并检查本文(尤其是安全性部分):