上文我们介绍了基于Linux系统的SQLCipher的基本使用方法,本文介绍基于Windows的编译、使用和测试等基本操作。
1/6) 下载源代码
官方网站:https://www.zetetic.net/sqlcipher
代码网站:https://github.com/sqlcipher/sqlcipher
下载网址:https://github.com/sqlcipher/sqlcipher/releases
演示版本:https://github.com/sqlcipher/sqlcipher/archive/refs/tags/v4.10.0.tar.gz
使用上述链接下载代码包之后,解压如下图所示:

2/6) 安装依赖
SQLCipher的加密功能依赖于OpenSSL,我们可以自行编译OpenSSL或使用预编译库。本文采用slproweb.com提供的预编译库。
下载网址:https://slproweb.com/products/Win32OpenSSL.html
演示版本:https://slproweb.com/download/Win64OpenSSL-3_5_4.exe
如需OpenSSL的其他版本,打开下载网址后,可以在页面上查找特定版本,如下图所示:

下载完毕后,双击直接运行,在如下界面选择OpenSSL库的存储路径,该路径后续我们需要使用到。如下图所示:

安装完毕后,如下图所示:

3/6) 编译和安装
第一步,进入Visual Studiod的“开发人员工具命令提示命令”对话框。
在Windows上编译SQLCipher,需要使用Visual Studio自带的“适用于 VS 2017 的 x64 本机工具命令提示”进行编译,打开方法如下图所示:

第二步,使用如下命令生成sqlite3.c文件:
1 | nmake /f Makefile.msc clean |
命令执行过程如下图所示:

第三步,sqlite3.c生成之后,使用如下命令编译基于OpenSSL动态库的SQLCipher动态库:
1 | # 注意修改其中的 OpenSSL 的安装路径,编译动态库 |
该命令执行过程,如下图所示:

编译完毕之后,我们可以在当前目录下找到动态库sqlcipher.dll和导入库sqlcipher.lib,如下图所示:

第四步,安装库文件和头文件
由于没有提供安装功能,我们需要自行拷贝所需文件制作一个开发用的SDK。过程如下:
1 | $1:创建目录 D:\dev\sdk\sqlciper\4.10.0 |
最终其目录结构如下图所示:

至此我们已经成功编译了SQLCipher的动态库,后续我们演示下基于该SDK进行开发的过程。
4/6) 使用SQLCipher库编码开发
如下测试代码,完成打开数据库、设置密钥、创建数据表、插入数据、检索数据等基本操作。
1 |
|
在Visual Studio设置好项目属性之后,编译上述源代码,一般会报如下错误:
1 | 严重性 代码 说明 项目 文件 行 禁止显示状态 |

要解决上述问题,我们需要在项目属性“预处理器定义”加上编译参数“SQLITE_HAS_CODEC”,添加方法如下图所示:

编译参数添加完毕后,我们继续运行该测试代码,结果如下图所示:

至此,我们演示了SQLCipher的下载、编译、安装、命令行、编码开发等基本操作,整体来看开发人员很容易从SQLite迁移到SQLCipher。
使用该SDK的测试代码和工程文件,可参考:https://github.com/wosanxian/sqlcipher-example/tree/main/example/win.shared.openssl_shared
5/5) 其他编译方法示例
上述步骤中,我们演示了基于OpenSSL动态库编译SQLCipher动态库的方法,下面描述其他编译方法。
- 基于OpenSSL静态库编译SQLCipher动态库的方法(后续部署时仅发布sqlcipher.dll即可,libcrypto-3-x64.dll无需一起发布),使用如下命令:
1 | # 第1步:生成sqlite3.c文件: |
使用该SDK的测试代码和工程文件,可参考:https://github.com/wosanxian/sqlcipher-example/tree/main/example/win.shared.openssl_static
- 编译SQLCipher静态库的方法(开发时仅依赖sqlcipher_static.lib和libcrypto_static.lib,无需发布sqlcipher.dll和libcrypto-3-x64.dll):
1 | # 第1步:生成sqlite3.c文件: |
使用该SDK的测试代码和工程文件,可参考:https://github.com/wosanxian/sqlcipher-example/tree/main/example/win.static.openssl_static
- 编译SQLCipher数据库管理工具sqlcipher.exe的方法如下:
1 | # 生成sqlite3.c文件: |
6/6) Windows上浏览加密数据库的工具
除可以使用sqlciper.exe管理加密数据库之外,我们还可以使用可视化工具DB Browser fro SQLite,完成同样的操作,并且它更加直观和简单。
下载地址:https://sqlitebrowser.org/dl
演示版本:https://github.com/sqlitebrowser/sqlitebrowser/releases/download/v3.13.1/DB.Browser.for.SQLite-v3.13.1-win64.zip
下载后解压如下图所示:

双击 DB Browser for SQLCipher.exe 即可运行程序,然后选择打开数据库,按照要求输入数据库原密码之后,打开数据库:

如果我们输入的密码正确,接下来就可以正常的访问数据了,如下图所示:
