今天对逍遥来说是个特别的日子,有两件喜事:1、正式本科毕业啊,即将开始新的人生冒险。2、完成了对sqlite3用C语言实现的加密与读取。对数据库加密的必要性,在此就不必多说啦。仅对我在实现加密的过程中,遇到的问题及解决方法进行记录,便于自己复习,也方便他人。在此感谢CSDN上的朋友:abc19abc91,您共享的资料,给了我很大的帮助。
昨天突然想对自己的sqlite3的数据库加密处理,在网上找了很多相关参考资料,sqlite 3开源版不带加密功能,因此,需要借助另一个sqlite3加强的开源项目wxsqlite3。好了,让我们开始实现对数据库的加密吧。
1到http://wxcode.sourceforge.net/components/wxsqlite3下载wxsqlite3,逍遥当前下载的版本为:wxsqlite3-3.1.0,其目录中.\sqlite3\secure\src下是实现加密所需的源代码。
2新建一个“WIN32控制台应用程序”工程,逍遥用的是vs2008创建。项目名称为sqlite3,不勾选“预编译头”选项。点击“完成”。此时,项目中,应该是没有任何文件的。
3将加密文件及数据库源文件(.\sqlite3\secure\src)拷到sqlite3工程目录下, codec.c,codec.h,codecext.c,extensionfunctions.c,rijndael.c,rijndael.h,sha2.c,sha2.h,sqlite3.c,sqlite3.def,sqlite3.h,sqlite3ext.h,sqlite3secure.c。
4在sqlite3工程中加入已经存在的文件,将文件sqlite3.def 和sqlite3secure.c加入到源文件中,请不要将其他文件加入到列表中,否则编译不过。
5在sqlite3工程属性中,加入模块定义文件,sqlite3.def。
6在工程属性中,加入预定义宏sqlITE_ENABLE_RTREE,sqlITE_ENABLE_COLUMN_MetaDATA,sqlITE_HAS_CODEC=1,sqlITE3ENCRYPT_EXPORTS,sqlITE_ENABLE_FTS3,sqlITE_ENABLE_FTS3_PARENTHESIS,sqlITE_SECURE_DELETE,sqlITE_SOUNDEX,CODEC_TYPE=CODEC_TYPE_AES128。
7改变项目属性,其配置类型为动态库(.dll);
8直接编译,就可以在目标目录生成sqlite3.dll,sqlite3.lib文件。
9将其sqlite3.h,sqlite3.dll,sqlite3.lib引入到要使用的项目上即可。成功,其加密方法在此就不在对sqlite3_key,sqlite3_rekey做详细介绍了。大神们已经写了很多啦。