加密sqlite3数据库文件
2024-09-01 23:27:56
EncryptSqlite3
加密sqlite3数据库,产生的数据库文件别人打不开。
实现原理
- 在写入文件前对每个字节加密,这样存入文件的就是加密后的数据。
- 将从文件读取的数据每个字节都解密,这样就得到正确数据用于处理。
- 可以搜索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次就能破解。当然我有一些自己的想法,比如做一些随机数混淆单字节数据,但需要设计可靠的加解密逻辑,有兴趣的可以自己尝试吧。
最新文章
- JS将秒转换为 天-时-分-秒
- java调用url接口
- SQL2008R2 不支持用该后端版本设计数据库关系图或表
- JavaScript初学者应注意的七个细节(转)
- ValidationContext
- DotNet程序汉化过程--SnippetCompiler准确定位
- HDU 1003(A - 最大子段和)
- debian支持ll命令
- 动态链接库dll的 静态加载 与 动态加载
- vs2008中使用gdi+的设置
- 通俗的解释JAVA wait/notify机制
- 在windows下详解:大端对齐和小端对齐
- jQuery应用操作之---表格
- 正则表达式,提取html标签的属性值
- kubernetes系列03—kubeadm安装部署K8S集群
- Centos7 Install Kubernetes
- Person Re-ID行人重试别数据集
- BUG总是存在的
- Maven项目下servlet异常
- 2.12 单选框和复选框(radiobox、checkbox)