加密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