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步的名稱。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM