SQLite具有加密/密码保护

ahm*_*md0 122 sqlite encryption password-protection

我只是学习使用SQLite,如果可能的话,我很好奇:

  1. 加密数据库文件?

  2. 密码保护数据库的开放?

PS.我知道有这个"SQLite加密扩展(SEE).",但根据文档,"SEE是许可软件...."和"SEE的永久源代码许可证的成本是2000美元."

Oli*_*iJG 98

SQLite内置了用于加密的钩子,这些钩子在正态分发中没有使用,但是我知道的一些实现:

  • SEE - 官方实施.
  • wxSQLite - 一个wxWidgets样式的C++包装器,它也实现了SQLite的加密.
  • SQLCipher - 使用openSSL的libcrypto来实现.
  • SQLiteCrypt - 自定义实现,修改后的API.
  • botansqlite3 - botansqlite3是SQLite3的加密编解码器,可以使用Botan中的任何算法进行加密.
  • SQLiteCrypto - SQLiteCrypto是通过AES-256和SHA-256加密Sqlite数据库的更简单方法

SEE,SQLiteCrypt和SQLiteCrypto需要购买许可证.

披露:我创建了botansqlite3.

  • @Krythic 事实上,.Net 库具有加密支持,即使该库带有本机 SQLite3,也不会以任何可能的方式“在很大程度上使这个答案无效”。这个答案至今仍然具有现实意义。 (6认同)
  • botansqlite3现在独立于Botan分发. (5认同)

Man*_*esh 18

您可以使用密码保护SQLite3 DB.在进行任何操作之前,首次按如下方式设置密码.

SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.open();
Run Code Online (Sandbox Code Playgroud)

然后下次你可以访问它

conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;");
conn.Open();
Run Code Online (Sandbox Code Playgroud)

这不允许任何GUI编辑器查看您的数据.稍后如果您想更改密码,请使用conn.ChangePassword("new_password"); 重置或删除密码,使用conn.ChangePassword(String.Empty);

  • 不会使用开源Sqlite.不知道这应该是什么语言实现,语言或API. (11认同)

Ror*_*ory 14

.net库System.Data.SQLite还提供加密.

  • .NET!= ASP.NET (27认同)
  • ASP.NET!= SQL Server!=已安装的SQL Server实例 (8认同)

Moh*_*eid 7

您可以sqlite3.dllhttp://system.data.sqlite.org/获取具有加密支持的文件.

1 - 访问http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki并下载其中一个软件包..NET版本在这里无关紧要.

2 - SQLite.Interop.dll从包中提取并重命名为sqlite3.dll.此DLL支持通过明文密码或加密密钥进行加密.

上述文件是本地和它要求.NET框架.它可能需要Visual C++ Runtime,具体取决于您下载的软件包.

UPDATE

这是我为32位开发下载的软件包:http://system.data.sqlite.org/blobs/1.0.94.0/sqlite-netFx40-static-binary-Win32-2010-1.0.94.0.zip

  • 还请查看这个https://github.com/rindeal/wxSQLite3-VS,它将为您提供`lib`和`dll`文件. (2认同)