加密sqlite3數據庫文件


GitHub地址

EncryptSqlite3

加密sqlite3數據庫,產生的數據庫文件別人打不開。git

實現原理

  1. 在寫入文件前對每一個字節加密,這樣存入文件的就是加密後的數據。
  2. 將從文件讀取的數據每一個字節都解密,這樣就獲得正確數據用於處理。
  3. 能夠搜索c/sqlite3.c和go/sqlite3-binding.c這兩個源碼中的(ENCRYPT_SQLITE3)宏,分析代碼就行。

使用方法

在./c/和./golang/目錄中都有build.bat和build.sh
在windows環境使用cmd進入目錄執行.\build.bat便可
在Linux環境進入目錄後執行./build.sh便可
能夠使用編譯後的官方控制檯程序./c/sqlite3 t.db來經過命令行讀寫sqlite3文件

不足之處

因爲寫入和讀取位置由sqlite3控制,所以加解密都只能爲針對單字節。由於大多數對稱加密都須要從頭開始加解密,像AES有些模式後面加密的數據依賴前面加密的結果。因此我在本項目中實現的僅僅是將每一個字節和密鑰進行異或,這是最簡單的單字節加解密。固然若是別人知道這個這個規則,最多嘗試255次就能破解。固然我有一些本身的想法,好比作一些隨機數混淆單字節數據,但須要設計可靠的加解密邏輯,有興趣的能夠本身嘗試吧。github

相關文章
相關標籤/搜索