加密sqlite3數據庫文件



GitHub地址

EncryptSqlite3

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

實現原理

  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次就能破解。當然我有一些自己的想法,比如做一些隨機數混淆單字節數據,但需要設計可靠的加解密邏輯,有興趣的可以自己嘗試吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM