Keep on going, never give up.

如何在IOS和OSX中使用SQLCipher

在ios/os开发中,常需要加密sqlite数据库,可通过如下方法:

1、下载SQLCipher zip包,并解压

https://github.com/sqlcipher/sqlcipher

2、放到我们项目的根目录下,比如Helloworld,那么放到Helloworld下面,而不是其平级目录

3、在当前项目下添加工程引用,sqlcipher.xcodeproj

4、工程设置:Build settings下面Header Search Paths添加参数$(PROJECT_DIR)/sqlcipher

5、工程设置:Build settings下面Other Linker Flags添加参数$(BUILT_PRODUCTS_DIR)/libsqlcipher.a

6、工程设置:Build settings下面Other C Flags添加参数-DSQLITE_HAS_CODEC

7、工程设置:Build Phases下面Target Dependencies下点击+添加sqlcipher

8、工程设置:Build Phases下面Link Binary With Libraries下点击+添加libsqlcipher.a和Security.framework

9、工程设置:Build Phases下面有关libsqlite3.dylib要删除掉。

10、测试代码(Swift 3.0,其它数据库使用函数同标准sqlite):

 var key:String = "12345678"
sqlite3_key(dbHdlr, key, Int32(strlen(key)));

只是这句key设置是必须放到sqlite3_open后面!!具体可参考官方说明:

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

Fax:

1、还是提示Use of unresolved identifier ‘sqlite3_key’错误?

解决方法:直接在桥接文件中#import "sqlite3.h"之前,手动增加定义#define SQLITE_HAS_CODEC 1

2、加密后的数据库,可通过hexdump -C yourdb.sqlite 查看加密结果

3、加密后的数据库,即使提供错误的key也是可以打开的,但是增删改查是无效果,只能正确的key才可以正常增删改查

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2017 Metsky.com, All rights Reserved.