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’。

sqlite 1

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几项配置

sqlite 2

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

sqlite 3

4.添加加密代码

sqlite 4

相似是在数据库open之后就用这个 setKey 方法。

sqlite,说明:

  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地图