今天对逍遥来说是个特别的日子,有两件喜事: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做详细介绍了。大神们已经写了很多啦。
希望对用sqlite3加密的朋友有所帮助,有不足的地方请在评论处留言,一起进步吧