zoukankan      html  css  js  c++  java
  • iOS SQLite解密之SQLCipher

      开门见山,本文主要讲在Mac下使用SQLCipher编译解密数据库文件方法,iOS项目集成SQLCipher自己可以百度,网上帖子很多。

      官方集成文档:https://www.zetetic.net/sqlcipher/ios-tutorial

      SQLCipher:https://github.com/sqlcipher/sqlcipher

    解密数据库

    一、编译

      1. 这个步骤可参考文章:(http://www.cnblogs.com/eileenleung/p/5456907.html中Terminal 上安装 SQLCipher部分),作者写的很详细,就不啰嗦了。如果按照文中步骤make成功,下面2-6步骤可忽略,若make始终不成功,并报 openssl/rand.h 找不到错误;可以首先执行如下第6步骤(首先判断你的openssl路径和如下命令路径符合);如果没有安装openssl;老实执行2-6步骤:

        注意:如果在上作者文章中按照1,2步骤完成后,始终还是不能make成功,,可如下执行:

      2. make clean

      3. 安装brew命令:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

      4. 安装openssl: brew install openssl

      5. 链接:    brew link openssl --force

      6. 关键一步:把第一步的 ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" 命令 修改成 ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto -L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include" ,执行,成功,然后 make,编译成功;

      其中: “LDFLAGS: -L/usr/local/opt/openssl/lib 和 CPPFLAGS: -I/usr/local/opt/openssl/include” 这两个路径可以使用命令: brew info openssl 找到。

      至此,编译成功,下面可以根据已加密的数据库文件和密码进行解密操作了,参考 二、解密 。

    二、解密

    1.切换到你的sqlcipher目录下,执行:./sqlcipher 要解密的数据库路径
    2. PRAGMA key = '你的加密密码';
    3. ATTACH DATABASE '要解密的数据库名称(可以和第1步数据库名称不同)' AS plaintext KEY ''; 
    4. SELECT sqlcipher_export('plaintext');

    5. DETACH DATABASE plaintext;

    6. .q 退出

    切换到你的sqlcipher目录下,就找到你刚才解密的数据库了,名称就是第3步的名称。 

     

  • 相关阅读:
    截图与图片合成的几种方法
    GPUImage 自定义滤镜
    How do I solve the error: An error was encountered while running (Domain = LaunchServicesError, Code = 0) ?
    tableview 重用nib cell
    开发DZ插件教程
    QBImagePickerController 用法
    ALAsset和ALAssetRepresentation
    if exists和if not exists关键字用法
    Java socket 超时
    Android 图片的压缩
  • 原文地址:https://www.cnblogs.com/water-wjf/p/4506407.html
Copyright © 2011-2022 走看看