sqlcipher在windows环境下编译

sqlcipher在windows环境的编译

编译平台:

  1. Windows10 x64
  2. MinGW
  3. sqlcipher代码版本:v4.3.0
  4. ActiveTcl版本:ActiveTcl-8.5.18.0.298892-win32-x86_64

编译后的sqlcipher可运行平台:

  1. windows 10 x64
  2. windows 7 x64
  3. 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编译工具包下载

sqlcipher命令行的使用,参考博客:

https://blog.csdn.net/u010333084/article/details/104984553

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值