2012-03-01 52 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發送加密數據。只要我準備好發佈我的代碼就會更新這篇文章。乾杯。