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安装依赖,安装选项如下图。

sqlcipher在windows环境下编译_第1张图片

第3步:准备OpenSSL环境

参考 《 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

你可能感兴趣的:(数据库)