美文网首页
swift 下使用fmdb 以及如何使用SQLCipher

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

作者: lkqin | 来源:发表于2015-10-31 10:57 被阅读1074次

找了很多资料关于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

相关文章

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

    找了很多资料关于swift下 如何给 sqlite 加密,发现都没有于是笔者也只能开始搜寻资料了objc下比较成熟...

  • [Swift]在swift中使用FMDB

    FMDB在OC中使用较多, 来到swift的世界,依然不想放弃他,下面就来看一下如何在swift中使用; 说明: ...

  • 对FMDB加密-SQLCipher如何使用

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

  • swift FMDB使用

    FMDB特性: FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API...

  • swift中使用FMDB

    iOS常用的第三方数据管理库就是FMDB了,这个库比较轻量级,而且使用起来非常方便,在学习swift的过程中,试过...

  • 拿走即用之FMDB

    FMDB 框架使用(作者离职,求一份工作) 将 fmdb 文件夹拖入项目 建立桥接文件 将 Swift exten...

  • iOS WCDB 使用

    iOS WCDB使用 准备 简介 WCDB 是基于SQLCipher,而SQLCipher 又是基于SQLite....

  • Swift下如何使用#if条件编译

    Swift下如何使用#if条件编译 Swift 不像ObjectC一样,通过定义一个变量,然后使用#if #end...

  • iOS FMDB增删改查

    FMDB是一款简洁、易用的封装库,下面简单介绍下FMDB的使用: 在FMDB下载文件后,导入工程中,并使用 lib...

  • SQLCipher

    转自使用SQLCipher加密SQLite数据库其他参考文章: 集成SQLCipher SQLite 加密 -- ...

网友评论

      本文标题:swift 下使用fmdb 以及如何使用SQLCipher

      本文链接:https://www.haomeiwen.com/subject/lbnfhttx.html