SQLITE3 加密总结 (sqlite 3.6.12 版本)
董淳光 42530 (老工号)
dcg1981@163.com
2009 年 4 月 9 日星期四
I. 序.....................................................................................................................................................1
II. 问题初分析...................................................................................................................................2
III. 研究结果......................................................................................................................................3
IV. 可靠性........................................................................................................................................17
V. 关键点说明..................................................................................................................................17
I. 序
时隔上次写《Sqlite3 使用总结》已过去 2 年。这 2 年时间我做了好些对自
己人生影响很大的事情。
不扯太远了。2 年来一直想把 sqlite3 的加密搞清楚一些,但一直没时间去
做。这两天终于有空坐下来研究 sqlite3 的加密方法。有点收获。记录下来免得
忘记。
我写本文章时,sqlite3 最新版本是 3.6.12 。我就以这个版本的源代码为例
进行分析。并且,我喜欢它那整合代码,整合成一个 .c 和一个 .h 文件。虽然在
vc2003 里编辑慢如蜗牛,但是一旦编辑好,以后使用起来不至于每个工程都拖
上一堆文件。工程简洁方便。所以下面的叙述全部都是以 sqlite3 v3.6.12 整合的
源代码为基础展开。
我认为未来 sqlite3 v3.XX 的整合版本大体上都可以用下面介绍的代码进
行加解密。Sqlite3 在版本变化中,有一些宏、函数被改名,读者很容易查出来
并自己修正。也有一些函数会被丢弃。读者应该也可以自行分析出来。我下面
的代码尽可能保持与 sqlite 版本的兼容性。不使用那些容易被丢弃的结构或函
数。这样以后就不会常常有人发邮件咨询我能否制作一个最新版本 sqlite 加密了。