美文网首页
如何在FMDB项目中添加SQLCipher,加密数据文件

如何在FMDB项目中添加SQLCipher,加密数据文件

作者: 温都亚希 | 来源:发表于2019-11-07 19:00 被阅读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.csqlite3.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 宏则为设置的密钥,这样数据库文件就需要输入密钥才能访问了。

image

相关文章

网友评论

      本文标题:如何在FMDB项目中添加SQLCipher,加密数据文件

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