美文网首页
如何在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