FMDB/SQLCipher数据库加密

 
在iOS开发过程遭到时索要因此到SQLite来囤数据,由于Apple的沙盒机制,我们App的多少存储于沙盒里面,一般情形下无法以到数,但是iOS管理软件iFunBox可以读取到应用程序沙盒里面的文书,因此为保证数据的安全性,我们得针对数据库进行加密。

数据库加密有半点种方法:

1.对准负有数据进行加密

2.针对数据库文件加密

 
对比以上两种植方法,第一种艺术的广大做法是凡快要存储的情先加密然后存到数据库被,使用的时光以数据库解密,但是如此会耗费很多时刻,大部分性消耗在数码的加解密达,同时,第二栽艺术,SQLite本身支持加密意义(免费版的非支持)
,SQLCipher是一个开源的SQLite加密扩展,支持针对db文件进行256各的AES加密,通常我们见面为此FMDB这个家伙库,FMDB对原生的SQLite进行了包装,提供了面向对象的艺术对数据库操作,同时FMDB
也供了对 SQLCipher 的支撑。

集成SQLCipher

 
编译SQLCipher需要做有配置,具体配置详情见:https://www.zetetic.net/sqlcipher/ios-tutorial/,这里我们使用cocoapod
引用 FMDB 和SQLCipher。

1.获SQLCipher加密模块

Podfile中添加pod ‘FMDB/SQLCipher’。

2.导入SQLCipher

  执行 pod
install后自行取SQLCipher,SQLCipher只发生少个公文sqlite3.h、sqlite3.m,如果非是由此CocoaPods获取SQLCipher模块的口舌需要手动拷贝sqlite3.h、sqlite3.m文件及工程被。

3.配置Xcode

 
通过宏(SQLITE_HAS_CODEC)来配置SQLite是否被加密模块,我们需要以Xcode中布置开启加密模块组件的大,本文介绍CocoaPods方式的则毫不配置。

(1)target -> Build Setting -> Other C
Flags添加-DSQLITE_HAS_CODEC、-DSQLITE_TEMP_STORE=2、-DSQLITE_THREADSAFE、-DSQLCIPHER_CRYPTO_CC几项配置

(2)target -> Build Setting -> Other Linker Flags添加-framework
Security配置

4.添加加密代码

相似是于数据库open之后便因故者 setKey 方法。

说明:

  1.
万一项目受到原本有FMDB,不推荐直接引入FMDB/SQLCipher,修改后无便于类库的联合保管暨翻新。我们可直接将sqlite3.h、sqlite3.m文件拖到工程中,然后配置Xcode即可。简单来说步骤如下:

(1)在您有FMDB的工程里,加入sqlite3.h 和 sqlite3.m

(2)在工程的build setting里窜两独布局

一个凡是other c flags ,如达到面图的非常 other c flags

一个凡是 other link flags , 入上图那个other lilnk flags

然后FMDatabase 的 setkey
方法就是好就此了,在开辟数据库后,调用此方式,数据库文件就加密可以了。

参考资料:

 《对FMDB加密-SQLCipher如何使用》

网站地图xml地图