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次就能破解。当然我有一些自己的想法,比如做一些随机数混淆单字节数据,但需要设计可靠的加解密逻辑,有兴趣的可以自己尝试吧。

最新文章

  1. JS将秒转换为 天-时-分-秒
  2. java调用url接口
  3. SQL2008R2 不支持用该后端版本设计数据库关系图或表
  4. JavaScript初学者应注意的七个细节(转)
  5. ValidationContext
  6. DotNet程序汉化过程--SnippetCompiler准确定位
  7. HDU 1003(A - 最大子段和)
  8. debian支持ll命令
  9. 动态链接库dll的 静态加载 与 动态加载
  10. vs2008中使用gdi+的设置
  11. 通俗的解释JAVA wait/notify机制
  12. 在windows下详解:大端对齐和小端对齐
  13. jQuery应用操作之---表格
  14. 正则表达式,提取html标签的属性值
  15. kubernetes系列03—kubeadm安装部署K8S集群
  16. Centos7 Install Kubernetes
  17. Person Re-ID行人重试别数据集
  18. BUG总是存在的
  19. Maven项目下servlet异常
  20. 2.12 单选框和复选框(radiobox、checkbox)

热门文章

  1. Spring 框架(持续完善中)
  2. Java-Collection和Map
  3. .NetCore之接口缓存
  4. NX二次开发-NX访问SqlServer数据库(增删改查)C#版
  5. Ansible常用模块介绍及使用(2)
  6. 分布式文件系统之FastDFS安装部署
  7. 《图解 HTTP》 学习笔记
  8. 记一次数据库主从导致严重的bug解决过程
  9. 学习Maven有感
  10. 中部:执具 | R语言数据分析(北京邮电大学)自整理笔记