项目中需要对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.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
今天的文章
wxSqlite3加密库单独使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60306.html