2012-03-01 133 views
2

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

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

  • sqlcipher
  • 源码看
  • sqlite的地穴

什么是我不明白的是:

  • 这些库如何与sqlite3的整合
  • 如果它们彼此具有相互兼容性fying加密密钥和设置数据访问等
  • 如果我能在我的应用程序会自动检测是否有和加密库我的sqlite3的安装支持,所以它有可能对我的应用程序,以支持不同的加密库

任何帮助非常感谢!

回答

1

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

我们有一些用户通过使用SQLCipher代码库构建PHP软件,成功地将SQLCipher与PHP结合使用。更多信息可以在这里的线程可用:

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

+1

我们现在有更多关于在PHP中使用SQLCipher的官方文档http://sqlcipher.net/sqlcipher-for-php/ – 2012-04-16 14:19:48

1

的sqlite3的图书馆需要与加密支持建立。这些项目(以及其他几个:https://stackoverflow.com/a/5877130/502789)可用于获取带有加密支持的sqlite3.so/dll。

所以,问题...

  1. 他们不使用SQLite整合。他们提供了一个替换sqlite3库加密支持
  2. Vanilla SQLite3提供加密所需的API,但它未实现。我相信SQLiteCrypt使用它自己的API,所以不会在这里工作(不要在此引用我)。
  3. 您的SQLite3安装不支持它,您需要将它替换为使用此功能编译的SQLite3库(请参阅我链接的选项)。

注意:我还没有使用PHP + SQlite3加密。似乎SQLite的加密有用

0

请参阅我的答案在这里: https://stackoverflow.com/a/49161716/9418360

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