swift 下使用fmdb 以及如何使用SQLCipher

找了很多资料关于swift下 如何给 sqlite 加密,发现都没有于是笔者也只能开始搜寻资料了
objc下比较成熟的加密方式 是使用 SQLCipher
具体请浏览
http://www.cnblogs.com/water-wjf/p/4506407.html?utm_source=tuicool
不过这是objc的对于我这种小白肯定是无法进行改写的 还好在找到了fmdb
fmdb也是使用objc写的,不过对swift有支持,最重要的它集成了SQLCipher(高兴吧)下面介绍如何使用
1.使用fmdb推荐安装方式CocoaPods,在你的Podfile里添加
pod 'FMDB/SQLCipher'
如果不需要加密
pod 'FMDB'
什么不知道CocoaPods??请自行百度安装 cocoapods 新的国内源 https://ruby.taobao.org/
之后执行 pod install (比较慢)
2:加密数据库(如果不需要请略过)
安装完成后打开工程的workspace找到下面这个文件


找到 下图者两个函数 在对应位置添加下面2行代码

const char* key = [@"bluescflang412#" UTF8String]; 
//StrongPassword可以修改成你自己的密码
sqlite3_key(_db, key, (int)strlen(key));

修改完成后就好了使用数据库的时候我们的数据库就是加密的啦 哈哈高兴吧
swift使用fmdb的方法 :

let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
//写上自己的数据库名称及路径
let path = documentsFolder.stringByAppendingPathComponent("test.sqlite")
//新建数据库
let database = FMDatabase(path: path)
//打开数据库
if !database.open() {
    print("Unable to open database")
    return
}
//新建表
if!database.executeUpdate("create table test(x text, y text, z text)",     withArgumentsInArray: nil) {
    print("create table failed: (database.lastErrorMessage())")
}
//像数据库插入数据
if!database.executeUpdate("insert into test (x, y, z) values (?, ?, ?)", withArgumentsInArray: ["a", "b", "c"]) {
    print("insert 1 table failed: (database.lastErrorMessage())")
}
//另一种插入数据的方法
if !database.executeUpdate("insert into test (x, y, z) values (?, ?, ?)", withArgumentsInArray: ["e", "f", "g"]) {
    print("insert 2 table failed: (database.lastErrorMessage())")
}
//获取数据
if let rs = database.executeQuery("select x, y, z from test", withArgumentsInArray: nil) {
while rs.next() {
let x = rs.stringForColumn("x")
let y = rs.stringForColumn("y")
let z= rs.stringForColumn("z")
print("x = (x); y = (y); z = (z)")
  }
} else {
    print("select failed: (database.lastErrorMessage())")
}
//关闭数据库
database.close()

好了 执行完后 我们可以自行打印 path 找到数据库文件路径
在命令行下执行 sqlite3 test.sqlite
执行 .table
会发现什么都没有
这就对了 证明我们的数据库已经加密了哈哈
如果是没有加密的 会显示刚才所创建的 test表
验证数据库是否加密 使用
hexdump -C plaintext.db

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,195评论 4 61
  • 这两天主要内容是巧虎第26个月的内容。
    清舞飞扬ing阅读 721评论 0 0
  • 这是《小背篓》中的一句歌词,给元宝听音乐听到这句歌词,感觉触动好深啊,昨天晚上重复听了好多次.. 今天带元宝去集市...
    Brena阅读 4,785评论 0 1
  • 什么是人生?人生的意义是什么? 许多人都回答过这个问题,在网上一搜可以搜出几万条答案。 每个答案都有自己的道理。我...
    甲坤阅读 3,339评论 0 1