我正在开发一个使用 SQLite 作为数据库的应用程序。我正在为 SQLite 使用 Devart dotconnect ( http://www.devart.com/dotconnect/sqlite/ ) 以及 .NET 4.5 中的实体框架来与数据库交互。我有兴趣通过加密保护数据库。我也看过这篇文章(带有加密/密码保护的 SQLite)。乍一看,Devart 和实体框架支持的唯一加密是 SEE,许可证费用为 2000 美元。是否有人知道任何与此设置兼容的开源解决方案?我对实体框架有点陌生,所以我什至不确定当实体框架解密数据库时幕后发生的所有事情......也许有一个我没有考虑过的替代方案?
问问题
1833 次
3 回答
0
我在两个小项目中使用了开源System.Data.SQLite
提供程序,两者都需要以某种方式保护数据库。您可以阅读提到的详细信息:
加密数据库支持。加密数据库完全加密,支持二进制和明文密码类型
在项目的功能页面。
于 2013-05-28T18:46:28.727 回答
0
对于System.Data.SQLite
使用默认加密:创建空数据库并在下面运行程序,然后在应用程序的连接字符串中使用密码属性。
void Main()
{
// Connection strings:
string sqliteDBFile = @"C:\temp\test.db";
string connStr = @"data source=" + sqliteDBFile;
string password = "password";
// Query create all the tables in the database:
string sql = @"CREATE TABLE...";
// Connection code:
SQLiteConnection cnn = null;
try {
cnn = new SQLiteConnection (connStr);
cnn.Open ();
cnn.ChangePassword (password);
SQLiteCommand myCommand = new SQLiteCommand (sql, cnn);
myCommand.ExecuteNonQuery ();
} catch (Exception e) {
Console.WriteLine ("Caught exception: " + e.Message);
Console.ReadLine();
} finally {
if (cnn != null) {
cnn.Close ();
}
}
}
于 2013-08-06T13:13:37.117 回答
0
好吧,已经5天了,没有人回答,所以我会把我的发现放上来。除了 SEE、CEROD 和SQLiteCrypt之外,我没有找到 dotConnect SQLite 专门支持的任何其他加密方法。SQLiteCrypt 似乎是最便宜的,但功能最少。我假设 dotConnect SQLite 支持它,因为它有一个选项(请参见此处)。根据我的研究,如果您的预算紧张并且想要保护您的数据库,您将不得不使用 SQLiteCrypt 或通过尽可能地隐藏它来保护数据库(这可能只会让普通用户不会弄乱数据)。请记住,我的要求是使用 dotConnect SQLite 和实体框架。没有这些限制,还有更多可用的选项。
于 2013-05-21T15:13:09.517 回答