对FMDB加密-SQLCipher如何使用

根据公司需求需要对数据库加密,公司使用FMDB做的数据库,上网查看了许多博客发现不少坑,总结一下如何使用SQLCipher

Demo下载地址-本人写的LKFMDBFMDB面向对象封装支持SQLCipher加密,操作简单完全面向对象封装。

简书地址

加密步骤

pod使用步骤

  1. 首先你的数据库必须使用FMDB
  2. github下载,你会在里面发现原来他是支持pod的,所以你可以直接pod 'FMDB/SQLCipher' # FMDB with SQLCipher
  3. 然后就是pod install,如果被墙了就用pod install --verbose --no-repo-update
  4. 这样的你的工程就有SQLCipher文件了
  5. 这样数据库还是没有加密的因为默认是不加密的所以你必须在FMDatabase.m大约在150行和177行左右加上下面这几句话
//不需要加密请注释掉下面三行代码
    else{
        [self setKey:DB_SECRETKEY];
    }

DB_SECRETKEY是宏也就是秘钥
截图说明

FMDatabase.m

但是许多项目是不怎么使用pod的,所以需要直接拖入工程里面

有的项目原来就是有fmdb工程文件的,但是不能加密,我的目的就是要把fmdb搞成支持加密的,应该很多人的工程都是要这个场景吧

  1. 准备工作首先你的工程是有FMDB的,同时也有SQLCipher
  2. 我们把准备好的SQLCipher文件下sqlite3.csqlite3.h拖入到需要加密的工程,这样就OK了
  3. 重复上面的第5步
  4. 关键步骤来了 关键步骤来了 关键步骤来了
    要在工程里设置两个地方
    第一个地方-Other c Flags
-DSQLITE_HAS_CODEC
-DSQLITE_THREADSAFE
-DSQLCIPHER_CRYPTO_CC
-DSQLITE_TEMP_STORE=2
第二个地方-other Linker Flags

在这个地方需要注意网上的有博客是 Security -framework 这样的顺序但是编译的时候会报错。

总结一下

其实简单步骤就是:
1.在你有fmdb的工程里,加入sqlite3.h 和 sqlite3.m
2.在工程的build setting里修改两个配置
一个是other c flags ,如上面图的那个 other c flags
一个是 other link flags , 入上图那个other lilnk flags
然后FMDatabase 的 setkey 方法就可以用了,在打开数据库后,调用此方法,数据库文件就加密ok了。

你在打开数据库会发现打开数据提示

加密后的数据库提示

日了狗了输入秘钥也打不开,然而就是这样。问我为什么我也不知道,反正在程序工是可以用代码操作读取数据库的。

最后是不是在使用FMDB特别繁琐要写一堆SQL语句

Demo下载地址-githubLKFMDB本人对FMDB面向对象封装支持SQLCipher加密,操作简单完全面向对象封装。

简书地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库加密一般有两种方式 1、对所有数据进行加密 2、对数据库文件加密 对比以上两种方式,第一种方式的常见做法是是...
    肉肉要次肉阅读 3,537评论 0 1
  • 在iOS开发过程中经常需要用到SQLite来存储数据,由于Apple的沙盒机制,我们App的数据存储在沙盒里面,...
    伍骁辛阅读 4,442评论 8 15
  • 介绍: 使用SQLite数据库的时候,有时候对于数据库要求比较高,特别是在iOS8.3之前,未越狱的系统也可以通过...
    farawei阅读 5,082评论 2 51
  • 这篇文章介绍如何对数据库文件进行加密,基于FMDB+SQLCipher,标明踩过的坑,留给同样掉进坑里的小伙伴参考...
    7544eb39c4ac阅读 6,618评论 3 28
  • 在iOS应用程序开发中经常需要使用SQLite来存储数据,很多时候需要加密保存一部分的数据。常见的做法是将要存储的...
    Crazy2015阅读 5,632评论 0 4