首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows平台下用nodejs制作加密sqlite3数据库

如何在windows平台下用nodejs制作加密sqlite3数据库
EN

Stack Overflow用户
提问于 2015-10-27 16:32:44
回答 4查看 7K关注 0票数 6

我想做一个使用sqlite3作为数据库的小型electron应用程序。我已经安装了sqlite3。npm install sqlite3,并使用node-gyp重建它,因为到目前为止,它与电子一起使用得很好。

现在我想要加密数据库如何做到这一点,特别是在windows平台

EN

回答 4

Stack Overflow用户

发布于 2018-03-11 18:01:18

是的,这是一个有点老的问题,但是如果有人仍然想要一个答案,这可能会对他们有所帮助。

您可以使用@journeyapps/sqlcipher在带有电子应用程序的sqlite3 DB上启用加密。

如果您使用任何javascript ORM sequelize,则可以将其配置为使用@journeyapps/sqlcipher作为sqlite3数据库引擎,如下所示

const sequelize = new Sequelize(null, null, 'your-encryption-key', { dialect: 'sqlite', dialectModulePath: '@journeyapps/sqlcipher', storage: 'path/to/db.sqlite' })

这对我很有效:)

Here是使用sqlite3和sqlchiper包装器的示例应用程序。

票数 8
EN

Stack Overflow用户

发布于 2015-10-28 17:25:41

默认情况下,Sqlite不提供加密数据库文件的方法。尝试这样做会带来很多问题。你必须用像AES256这样的东西加密文件,然后当你想要访问它的时候,你必须解密文件,这意味着你必须在某个地方保存一个解密的版本。您可以将其保存在内存中,但较大的数据库可能无法容纳在内存中,您还需要在SQLite库中实现这一点。您可以创建一个临时文件,但这意味着在使用数据库的任何时候都可以访问解密的版本,如果您的应用程序意外崩溃,该文件可能无法清除,从而使您的数据暴露出来。

有像sqlitecrypt或sqlitecipher这样的东西可以加密你的数据库,但它们是sqlite的替代品。它们实现了相同的API,但是它们通常是sqlite的分支。如here所示,node-sqlite3模块支持构建sqlitecipher。

可以对数据库中的数据进行加密。您需要使用密码短语生成一个密钥,然后加密每一列中的数据。将密钥上的密码设置为您希望用户用来解锁数据的密码。这不会隐藏数据库的结构,我认为只有当您有几列要加密的数据时,这才是一个实用的解决方案,因为您仍然需要索引字段才能查询数据。这对于密码管理器这样的东西很有用,在密码管理器中,用户名和密码都是加密字段,并且有一个与用户名/通行证对相关联的名称来描述它的用途。您可以通过凭据名称进行查询,但是用户名和密码只能通过密码访问。

票数 2
EN

Stack Overflow用户

发布于 2021-11-19 09:48:06

通过大量的测试,我发现better-sqlite3实际上是一个为Node.js和Electron添加SQLite3支持的无懈可击的库。因此,我继续创建了一个扩展的分支,它支持多种加密算法,如SQLCipherSQLeet。它经过了很好的测试,速度很快,和原始库一样完美无瑕。

在这里尝试一下:https://www.npmjs.com/package/better-sqlite3-multiple-ciphers

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33363075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档