• 1
  • 2
  • 3
  • 4
  • 5
mssql数据库问题 首 页  »  帮助中心  »  数据库  »  mssql数据库问题
对FMDB加密:SQLCipher使用方法
发布日期:2016-4-18 22:4:43

  对FMDB加密:SQLCipher使用方法

  根据公司需求需要对数据库加密,公司使用FMDB做的数据库,总结一下如何使用SQLCipher。

  加密步骤

  pod使用步骤

  首先你的数据库必须要使用FMDB

  在github下载,你会在里面发现原来他是支持pod的,所以你可以直接pod 'FMDB/SQLCipher' # FMDB with SQLCipher

  然后就是pod install,如果被墙了就用pod install --verbose --no-repo-update

  这样的你的工程就有SQLCipher文件了

  这样数据库还是没有加密的因为默认是不加密的所以你必须在FMDatabase.m大约需要在150行和177行左右加上下面这几句话

  //不需要加密请注释掉下面三行代码

  else{

  [self setKey:DB_SECRETKEY];

  }

  DB_SECRETKEY是宏也就是秘钥

  截图说明如下所示:

  

  FMDatabase.m

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

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

  首先准备工作,你的工程是有FMDB的,同时也需要有SQLCipher的,

  我们把准备好的SQLCipher文件下sqlite3.c和sqlite3.h拖入到需要加密的工程,这样就可以了,

  然后重复上面的第5步,

  关键步骤来了

  要在工程里设置两个地方

  

  第一个地方-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 link flags , 如上图那个other lilnk flags

  一个是other c flags ,如上面图的那个 other c flags

  然后FMDatabase 的 setkey 方法就可以用了,在打开数据库后,调用此方法,数据库文件就加密完成了。

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

  

  加密后的数据库提示

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

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

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