wxsqlite3改加密算法

wxsqlite3改加密算法,第1张

sqlite中的数据进行加密,SQLCipher开源框架。

1、sqlite中的数据进行加密。对数据库中插入的字段内容先进行AES,MD5等加密后在插入到数据库中,在使用时先从数据库中取出数据,然后在解密在使用这种方式好是好,但是有些致命的问题不能绕过,如果要对某个字段进行模糊查询 *** 作,那么该字段就不能加密,否则的话你不能对该字段进行模糊查询 *** 作,这样一来该字段还是要暴漏出来,别人还是能看到一些东西的。

2、SQLCipher开源框架。使用第三方库的开源库,SQLCipher这个开源框架不错,SQLCipher是一个在SQLite基础之上进行扩展的开源数据库。

用SQLCipher进行数据库加密。

SQLite目前已经是比较流行的数据存储 *** 作的API了。Android和iOS系统提供的API中 *** 作数据库默认均采用了SQLite方案。而SQLCipher是基于SQLite的加密数据库存取方案,集成相对比较快捷而且透明,在一定程度上保证了数据的安全。

代码设置:

如果你用的是系统sqlite3的API,则代码基本不用变,因为SQLCipher是基于系统的sqlite3API扩展的;

如果你用的是FMDB,更无需担心,因为FMDB是封装的系统sqlite3API;

唯一需要做的,就是初始化打开数据库文件sqlite3_open之后,紧跟着执行sqlite3_key设置数据库加密的密钥,于是sqlcipher集成工作就完成了。如果你用的是FMDB,可以直接用setKey方法;如果不是,也可以去FMDataBase.m源码中拷贝这个方法的逻辑,方便调用

使用sqlite3_key_v2函数设置秘钥后,在对数据库的所以 *** 作都是加密的

设置加解密数据库文件的秘钥。

SQLITE_API int SQLITE_STDCALL sqlite3_key_v2(

  sqlite3 *db,

  const char *zDbName,

  const void *pKey,

  int nKey

)

db:数据库连接句柄

zDbName:数据库名称

pKey:秘钥

nKey:秘钥长度

注释:

db

数据库连接句柄。此句柄必须是由 sqlite3_open函数, sqlite3_open16函数或 sqlite3_open_v2函数返回。

zDbName

数据库名称。数据库名称为主数据库的“main”,临时数据库的“temp”或在附加数据库的ATTACH语句中的AS关键字后指定的名称。

pKey

秘钥。

nKey

秘钥长度。注:预留接口需要程序自己实现。

返回值:

返回值详见“SQLite 返回值与错误代码”。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10023496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存