2013-05-15 47 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(); 

      } 
     } 
    } 
相關問題