SQLite3数据库加密 - 确定加密库?

时间:2012-03-01 09:54:59

标签: php encryption sqlite sqlcipher

我正在考虑为PHP应用程序支持加密的sqlite数据库。我正在使用PHP的SQLite3扩展,似乎它们已经支持加密方法,至少SQLite3 :: __构造允许加密密钥传递。

我无法弄清楚的是,他们在文档中讨论的是哪个加密库。通过谷歌搜索我发现了以下内容:

  • sqlcipher
  • sqlite见
  • sqlite crypt

我不清楚的是:

  • 这些库如何与SQLite3集成
  • 如果他们彼此分享关于指定加密密钥和设置数据访问等的兼容性。
  • 如果我可以在我的应用程序中自动检测我的SQLite3安装是否支持任何加密库,那么我的应用程序可以支持不同的加密库

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:2)

需要构建SQLite3库并支持加密。这些项目(以及更多:https://stackoverflow.com/a/5877130/502789)可用于获取具有加密支持的sqlite3.so/dll。

所以,问题......

  1. 他们没有与sqlite集成。他们提供了一个带有加密支持的替代sqlite3库
  2. Vanilla SQLite3提供加密所需的API,但它没有实现。我相信SQLiteCrypt使用自己的API,因此在这里不起作用(请不要引用我)。
  3. 您的SQLite3安装不支持它,您需要将其替换为使用此功能编译的SQLite3库(请参阅我链接的选项)。
  4. 注意:我没有使用PHP + SQlite3加密。

答案 1 :(得分:1)

据我所知,传递给PHP打开的密码只有在使用通过加密支持编译的SQLite版本时才有效(即加密在默认构建中不起作用)。

我们已经让一些用户通过使用SQLCipher代码库构建PHP软件,成功地将SQLCipher与PHP结合使用。有关更多信息,请参见此处的主题:

http://groups.google.com/group/sqlcipher/browse_thread/thread/6d77e4ef2a1530d7

答案 2 :(得分:1)

一个似乎对SQLite加密有用的帖子由管理员发布并解释如何使用sqlcipher http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/14965-android-database-encryption-sqlcipher-library.html

答案 3 :(得分:0)

请在此处查看我的回答: https://stackoverflow.com/a/49161716/9418360

SQLite3具有用于加密的内置接口。您需要在config.m4中启用它:-DSQLITE_HAS_CODEC = 1 我已经开发了基于AES的自己的加密技术。 / ext / sqlite3 / libsqlite中的一些C文件,效果很好。整个数据库文件已加密,无需从PHP发送加密数据。只要我准备好发布我的代码就会更新这篇文章。干杯。