wxSqlite3加密库单独使用

2 篇文章 0 订阅


项目中需要对sqlite的db文件进行加密,其中开源包括wxsqlite3等,但是又不需要完整的wxsqlite3,只需要其中的sqlite3的加密功能。

下载wxsqlite3

下载地址:https://sourceforge.net/projects/wxsqlite/?source=directory
这里吴选择的是wxsqlite3-3.1.0,因为高版本wxsqlite将sqlite整合了。资源我稍后会上传。

编译

我使用的是vs2015+qt5.8

添加文件至工程

将wxsqlite3-3.1.0\sqlite3\secure\src下的文件全部拷贝到工程目录,如下图
sqlite3机密库源码
将sqlite3.h和sqlite3secure.c添加至工程中,入下图所示
在这里插入图片描述

添加预处理器

添加预处理器SQLITE_HAS_CODEC

使用

在调用sqlite3_open之后调用加解密方法,来对数据库文件进行操作

加密

调用sqlite3_rekey对未加密的db文件进行加密

int nRet = sqlite3_rekey(pDb, strKey.c_str(), strKey.length());

参数1:pDb 数据库句柄,通过sqlite3_open得到
参数2:strKey 密码,自己设置
参数3:密码长度

解密

调用sqlite3_key对加密的db文件进行解密

int nRet = sqlite3_key(pDb, strKey.c_str(), strKey.length());

参数1:pDb 数据库句柄,通过sqlite3_open得到
参数2:strKey 密码,自己设置
参数3:密码长度

删除密码

先调用sqlite3_key对加密的db文件进行解密
调用sqlite3_rekey对加密的db文件进行解密,因为这里是删除密码,所以通过设置空密码来实现

int nRet = sqlite3_rekey(pDb, nullptr, 0);

后记

这里我没有单独编译成库文件来使用,小伙伴也可以试试封装成库文件来使用。
还有一点,有的小伙伴不想使用wxsqlite3-3.1.0中自带的sqlite3版本,或者说当前使用的sqlit3版本不一致,可以只使用wxsqlite3中加密库相关的代码。我就是这样干的。我现在使用的sqlite3是3.7的版本。

资源

sqlite3单独编译
这里面包含了wxsqlite3-3.1.0源码和我自己测试的小demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值