如何在FMDB项目中添加SQLCipher,加密数据文件
2019-11-07 本文已影响0人
温都亚希
文章搬运地址:Adding SQLCipher to Xcode Projects
博客参考地址: 对FMDB加密-SQLCipher如何使用
简单概括如下:
1、直接安装
在命令行中使用
Git 检出 SQLCipher项目 代码,并构建源合并:
$ cd ~/Documents/code
$ git clone https://github.com/sqlcipher/sqlcipher.git
$ cd sqlcipher
$ ./configure --with-crypto-lib=none
$ make sqlite3.c
将生成的sqlite3.c
和sqlite3.h
文件添加到项目中,在项目的 Build Settings 选项卡中,搜索Other C Flags
,双击修改添加以下字段:
-DSQLITE_HAS_CODEC
-DSQLITE_TEMP_STORE=3
-DSQLCIPHER_CRYPTO_CC
-DNDEBUG
如果是Swift项目,则搜索Preprocessor Macros
,添加SQLITE_HAS_CODEC=1
字段
2、CocoaPods安装
在Podfile文件中添加 SQlCipher 作为依赖,运行 pod install
platform :ios, '10.0'
target 'SQLCipherApp' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'SQLCipher', '~>4.0'
end
在 FMDB 源码中做部分修改,在FMDatabase.m
源码中,找到
- (BOOL)open {
if (_db) {
return YES;
}
int err = sqlite3_open([self sqlitePath], &_db );
if(err != SQLITE_OK) {
NSLog(@"error opening!: %d", err);
return NO;
}
// 需要手动添加设置的Key
else {
[self setKey:SQLCIPHER_KEY];
}
if (_maxBusyRetryTimeInterval > 0.0) {
// set the handler
[self setMaxBusyRetryTimeInterval:_maxBusyRetryTimeInterval];
}
return YES;
}
在 - (BOOL)open
方法中添加设置的 key,SQLCIPHER_KEY
宏则为设置的密钥,这样数据库文件就需要输入密钥才能访问了。