2012-11-26 37 views
0

我正在使用ZeosDB組件來訪問sqlite數據庫。它可以在一個未加密的數據庫上正常工作。ZeosDb:加密SQLite

在加密數據庫我收到:文件被加密或不是數據庫。 Eaven如果我設置密碼。

我使用的DLL文件是否有誤?我使用從the official page最後一個DLL。它不支持默認的加密?

+0

你如何加密的數據庫?您是否在使用一些數據庫管理工作室對其進行加密? –

+0

yes.Navicat.suggestions? – opc0de

回答

4

SQLite3上有several encryption schemes

其中,您有:

  • 正式從sqlite3的作者不是免費的加密庫,命名爲SQLite Encryption Extension (SEE):只需付和使用DLL,並修改初始化設置數據庫鍵;
  • 開源SQLCipher;
  • WXSQlite3包裝;
  • 對於Delphi,我們的開源靜態鏈接版本included in our mORMot(使用自定義加密) - 靜態鏈接允許您不使用外部sqlite3.dll,因此它可以幫助您更輕鬆地部署和支持 - 它可輕鬆切換到MS SQL, Oracle或OleDB/ODBC具有相同的源代碼從Delphi 5到XE3並具有great speed;
  • 見上面的鏈接。

ZeosDB SQLite3的水平手柄沒有。

的SQLITE3 API驅動器(單元ZPlainSqLiteDriver)不包含cyphering。所以你將不得不改變它。或切換到另一個支持加密API的包裝器。

3

最近我有同樣的問題(使用UniDac)。官方的DLL不支持加密。有幾個包含加密的庫,但它們不可互換。即用一個SQLite DLL加密的數據庫不能用其他發行版解密。我認爲你的情況是一樣的。

我的解決辦法是:

  • 下載...static bunde... package (x86, x64) for .NET - 這種支持加密(窗口DPAPI我認爲)
  • 更名System.Data.SQLite.dll到SQLite3.dll - >此DLL是本機DLL和支持ENC/DEC
  • 在我DBMS的文件夾,我的SQLite替換DLL與提取上述

這樣DBMS加密使用新的DLL,和你的程序可以解密使用相同版本的DLL。

您還可以看看:

注:

  • 另外,還要確保你複製SQLite3.dll到你的程序目錄。許多其他產品使用SQLite並位於%PATH%中,因此不能保證「正確」的SQLite3.dll將由您的可執行文件加載。 Interesting solution can be found here;
  • 請參閱許可證以查看您是否可以免費使用.NET的版本,because of this