sqlcipher在windows环境的编译
编译平台:
- Windows10 x64
- MinGW
- sqlcipher代码版本:v4.3.0
- ActiveTcl版本:ActiveTcl-8.5.18.0.298892-win32-x86_64
编译后的sqlcipher可运行平台:
- windows 10 x64
- windows 7 x64
- windows 7 x32
第1步:安装ActiveTcl
安装过程所有选项默认即可,完毕后会自动添加环境变量。
如果没有自动添加到环境变量,那就需要手动添加“C:\Tcl\bin”到系统环境变量PATH中。
第2步:安装minGW
通过MinGW Installer安装依赖,安装选项如下图。
第3步:准备OpenSSL环境
参考 《OpenSSL在windows环境的编译与安装》
OpenSSL在windows环境的编译与安装
第4步:依赖文件
复制依赖的OpenSSL文件到sqlcipher目录中
libcrypto.def
libcrypto.lib
libcrypto-3.dll
第5步:编译前的配置
下面静态链接与动态链接配置,二选一即可。
静态链接
./configure --enable-tempstore=yes --with-crypto-lib=none --disable-tcl CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DNOCRYPT -lcrypto-3 -DSQLCIPHER_CRYPTO_OPENSSL -I/c/OpenSSL/include -L/d/projects/sqlcipher-master/sqlcipher-master/ -static-libgcc" LDFLAGS="libcrypto.lib"
动态链接
./configure --enable-tempstore=yes --with-crypto-lib=none --disable-tcl CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DNOCRYPT -lcrypto-3 -DSQLCIPHER_CRYPTO_OPENSSL -I/c/OpenSSL/include -L/d/projects/sqlcipher-master/sqlcipher-master/ -static-libgcc" LDFLAGS="-lcrypto"
确定configure后,没有出现错误,再进行后面步骤
第6步:编译
make 生成sqlcipher.exe
make dll 生成sqlite3.dll
第7步:测试
创建一个未加密的数据库,创建表,插入一行
sqlcipher.exe ./test.db
CREATE TABLE "tb_a" (id integer,name text);
INSERT into tb_a (id,name) VALUES (1,"lilei");
.q
用winhex打开,可以看到的刚刚的内容是明文存储的。
创建一个加密的数据库,创建表,插入一行
sqlcipher.exe ./testencry.db
PRAGMA KEY = 'passwd';
CREATE TABLE "tb_a" (id integer,name text);
INSERT into tb_a (id,name) VALUES (1,"lilei");
.q
用winhex打开,数据全部密文,找不到刚刚插入的内容,但使用sqlcipher.exe验证密码后,可以正常增删改查。
第8步:程序如何调用
sqlite3 *db;
sqlite3_open("encry.db", &db);
sqlite3_key(db,"123",3);
//exec sql fun...
sqlite3_close(db);
sqlcipher命令行的使用,参考博客: