sqlite行使SQLCipher加密数据库

     
 以前没事做的时候大约接触了瞬间SQLCipher那么些数据库加密库,近日项目基于安全着想开端对客户端的sqlite举行加密,就选用了这一个方案.

搞了几天终于基本搞通了,现在把里面的主旨记录下来.

率先步当然是要合并进我们的档次,假如你项目用到了cocoapods,集成这一步就相对简便易行的多了,直接insert就可以.

能够一向通过pod search sqlcipher命令查询到

pod ‘SQLCipher’, ‘~> 3.1.0’

设若你用的是fmdb,可以应用直接运用

pod ‘FMDB/SQLCipher’

上面来说说不行使cocoapods情势的并轨

首先走访官放文档,依照文档来展开操作,这一个不多说了

https://www.zetetic.net/sqlcipher/ios-tutorial/

个中要注意一个一个细节,作品中涉及

以此肯定要专注到,如若项目中在此以前曾经存在了libsqlite3.dylib或者libsqlite3.0.dylib,一定要把它移除掉,不然项目是编译不经过的.

此外的依照上文提到的文章一步一步操作就可以了.

里头把SQLCipher拖入到花色中的时候

小说是这般介绍的

此处我指出,在把SQLCipher下载到电脑后,把文件夹放到品种的根目录.

开展到这里,大部分体系基本上就能跑起来了

跑不起来的持续看,跑起来的直接跳过看第二部分.

只要遵照文档明儿上午配备后要么跑不起来,请检查你的build setting 设置

此地的Build Active Architecture Only
一定要安装成YES,不然编译会报一堆错误(我这边是报了41个错误) 
PS:即时是用CocoaPods安装的此处也要设置成YES

Undefined symbols for architecture i386:

“_sqlite3_bind_blob”, referenced from:

-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o

“_sqlite3_bind_double”, referenced from:

-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o

“_sqlite3_bind_int”, referenced from:

-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o

“_sqlite3_bind_int64”, referenced from:

-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o

“_sqlite3_bind_null”, referenced from:

此地设置完成后,基本上就可以跑起来了.

其次步,加密一度存在的数据库

一旦你的施用是新建的,或者项目事先不设有sqlite文件,你新建数据库文件的时候,直接就是创设的加密的.

这边要说的是加密已经存在的数据库文件.

一起始自己认为这么些库只好对新建的文书举行加密,不过显明不可以满意自身这序列型早就上线好久,才起来做加密的急需,用户的多寡仍旧要封存的.

然后就先河Google和百度之….

接下来就找到了这篇文章 iOS 使用FMDB
SQLCipher给数据库加密

网站地图xml地图