iOS - 信息安全之数据库加密

借鉴:https://www.jianshu.com/p/22ee2a751e02

一、对固定db进行加解密

前提:此种加密db不需要进行'增删改'等操作,仅提供'查'的权限;

采取通用的加密工具:

pod 'FMDB/SQLCipher'

核心思路:打开数据库open -> 设置秘钥 setkey -> 查看连接 goodConnection -> 新建数据库并迁移数据,删除老的数据库;

新建继承FMDatabase的子类LCEncryptDatabase:

a.重写父类四个函数,新增一个函数:1.`-(BOOL)open;`2.`-(BOOL)openWithFlags:(int)flags;`3.`-(BOOL)openWithFlags:(int)flags vfs:(NSString*)vfsName;`4.`-(constchar*)sqlitePath;`5.`-(void)setEncryptKey:(NSString*)encryptKey`;b.不同版本的FMDB对应的重写方法不一致,下列拿2.5和2.75两个版本举例参考:1.~2.5版本:

~2.75版本:

在需要加密的地方调用 :

a.[FMEncryptDatabase setEncryptKey:@"秘钥"];

正常sql语句查询读取数据库数据;

a.限制:此查询限制在[db close]前,当数据库关闭后再查询读取会报错sqlite error :file is encrypted or is not a database;

二、对不固定db进行加解密

前提:仅对数据库进行加解密,但不限制数据库的'增删改查';

注意点:

1.需要根据对应使用的数据库做open和close区分;

2.可以设置数据库自动close时间进行限制;

在[db open]的时候进行解密:

图片.png

在[db close] 时候进行加密:



也支持修改数据库秘钥:


作者:Mn_Su

链接:https://www.jianshu.com/p/22ee2a751e02

你可能感兴趣的:(iOS - 信息安全之数据库加密)