cocos2dx里的sqlite数据库加密,且不影响sqlite工具打开阅读数据

一开始呢,老七是对数据库内容加密,然后程序里边对数据解密,但是打开sqlite工具阅读数据太蛋疼了,面对一堆加过密的乱码数据,就特别想把脸杵进方便面里。这招太影响开发效率和胃口,果断抛弃。

然后发现sqlite其实留了加密接口,不过开源版没有实现而已。不过有这个wxsqlite第三方做好的封装,已经实现加密,此东东下载链接如下

wxsqlite3点我进入

下来以后,有源码,也有编译好的lib和dll。

win下使用很简单,把wxsqlite3文件夹下sqlite3\secure\aes128\dll\release 里的sqlite3.lib和sqlite3.dll复制之,贴到项目包的输出文件夹(也就是你项目里的debug.win32)下,在项目->属性->链接器->输入  附加依赖项里边 填上 sqlite3.lib。 

再把wxsqlite3文件夹下include里边的 sqlite3.h弄到你的项目代码里边去,sqlite3.h的最上边要加上

#define SQLITE_HAS_CODEC 这句,表示开启加密


使用也很简单,在sqlite3_open之后和sqlite3_close之前,使用sqlite3_key(pDB, "123", 3 );这句代码即可,参数1是数据库指针,参数2是密码字符串,参数3是密码长度。

这里有个略蛋疼的事,老七好一阵研究才搞定,就是默认使用sqlite3_key()这个函数必须得用代码建库,不然白搭,你对已有数据的sqlite文件用这句,会一直告诉你“此数据库已加密或者不是一个数据库文件”,我当时就想把脸杵进方便面里。

还好我经过各种大胆尝试,找到了一种令人灰常欣喜的方法,老七用的sqlite编辑器,是SQLite Developer,里边其实带着加密功能呢,如图

只不过这个加密是用的自带的sqlite3.dll里的函数,我们呢,只要把.wxsqlite3文件夹下sqlite3\secure\aes128\dll\release  里的sqlite3.dll替换掉SQLite Developer的sqlite3.dll,然后你可以直接用SQLite Developer对 数据库文件加密了,并且程序里,只要sqlite3_key()后也可以正常读取数据,艾玛,太美好了。

而且大家不要担心上边图片里的“clear Encryption key”,这个老七测试过了,只有你自己设置的密码,才会出现这个选项,因为密码被记录在SQLite Developer里,已经加过密的数据库,这里边只有,ok啦,no有问题啦。既加密了数据库,又不影响我们开发。


然后就是移动端的使用,毕竟android和ios都不可能理会lib和dll,所以要wxsqlite3源码重新编译,已有高人解决,不在此复述,附上链接

点击打开链接

这句

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值