ZeosDb:加密SQLite

时间:2012-11-26 07:40:29

标签: delphi sqlite zeos

我正在使用ZeosDB组件访问sqlite数据库。它在未加密的数据库上运行良好。

在我收到的加密数据库上:文件已加密或不是数据库。如果我设置了密码,则为Eaven。

我使用的DLL文件错了吗?我使用the official page中的最后一个dll。默认情况下它不支持加密?

2 个答案:

答案 0 :(得分: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)不包含加密。所以你必须改变它。或者切换到另一个支持加密API的包装器。

答案 1 :(得分:3)

最近我遇到了同样的问题(使用UniDac)。官方DLL不支持加密。有几个库包含加密,但它们不可互换。即使用一个SQLite DLL加密的数据库无法使用其他分发进行解密。我认为你的情况是一样的。

我的解决方案是:

  • 下载...static bunde... package (x86, x64) for .NET - 这支持加密(我认为是Windows 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