2013-05-15 48 views
0

我正在开发一个使用SQLite的数据库的应用程序。我正在使用用于SQLite的Devart dotconnect(http://www.devart.com/dotconnect/sqlite/)以及.NET 4.5中的实体框架来与数据库进行交互。我有兴趣使用加密来保护数据库。我也看过这篇文章(SQLite with encryption/password protection)。乍一看,它看起来像Devart和实体框架支持的唯一加密是SEE,许可证花费2000美元。是否有人知道任何与此设置兼容的开源解决方案?我对实体框架很陌生,所以我甚至都不确定当实体框架解密数据库时发生在幕后的所有事情......也许还有一个我没有考虑过的选择?由Entity Framework支持的开源SQLite数据库加密?

回答

0

那么它已经5天了,没有人回答,所以我会把我的发现。 除了SEE,CEROD和SQLiteCrypt之外,我没有发现dotConnect SQLite特别支持的任何其他加密方法。 SQLiteCrypt似乎是最便宜的,但功能也最少。我假设它由dotConnect SQLite支持,因为它有一个选项(请参阅here)。从我的研究来看,如果你的预算紧张,想要保护你的数据库,你将不得不使用SQLiteCrypt或者通过隐藏它来保护数据库的安全(这可能只会阻止普通用户搞乱数据)。请记住我的要求是使用dotConnect SQLite和Entity Framework。没有这些限制,还有更多可用选项。

0

我已经在两个小项目中使用了开源System.Data.SQLite提供程序,两者都要求以某种方式保护数据库。您可以阅读提及的细节:

加密的数据库支持。加密的数据库完全加密 和支持二进制和明文密码类型

在项目的features page

0

对于默认加密System.Data.SQLite使用: 创建空数据库并运行下面的程序,然后在应用程序的连接字符串中使用password属性。

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(); 

      } 
     } 
    } 
相关问题