2012-10-10 73 views
5

我認爲這個問題已經被問到,但是我已經嘗試了幾個例子無濟於事。我的問題是這樣的...我有一個Android應用程序安裝程序,可以在設備上使用SQLCipher數據庫加密,這很正常。使用SQLCipher的Android - 您如何解密?

在模擬器上進行測試時,如果我使用DDMS下載數據庫文件,如何讀取該文件以檢查表和數據?我曾嘗試使用SQLite3命令外殼和ATTACH示例,但是每次我都這樣做時,我只會收到以下消息'錯誤:文件已加密或不是數據庫'。這肯定表明ENCRYPT正在工作,但我如何正確地在模擬器/蝕刻之外進行DECRYPT?

我需要不同的SQLite客戶端嗎?任何人都卡在這個?

我一用:SQLCipher爲Android 2.0.8 2012年6月14日

任何幫助嗎?謝謝

+0

什麼是您使用您的開發機器上? – CommonsWare

+0

如試圖讀取加密文件或Android開發?我已經嘗試SQLiteStudio v2.0.28/SQLite命令外殼3.7.14.1 /和Firefox的SQLite管理器。開發。環境是Eclipse Juno,針對Android分鐘。適用於Android 2.2的API 8。 – Hunter23

+0

做那些宣傳他們有SQLCipher支持? – CommonsWare

回答

3

「正常」的SQLite工具不包括SQLCipher。

你必須download souce和compile it yourself得到一個SQLCipher支持的命令外殼。

+0

嗯,所以要清楚 - 「社區」版本可以添加到Android項目中的項目和工作都很好;但是要集成到SQLite客戶端中,您需要購買用於編譯這些二進制文件的「商業」版本?或者'社區'版本可以編譯到現有的shell中嗎? – Hunter23

+0

另外:感謝編譯鏈接,我會通過這個工作來看看我能否得到這個工作。到目前爲止,看起來像我所需要的。非常有可用的快速/簡單解決方案。如果我卡住了,我會添加評論。謝謝!!! – Hunter23

3

我通過使用這個小腳本解決了這個問題。

decrypt.sh

#!/bin/bash 
# Bashscript to decrypt databases 

echo "pull db from device.." 
adb pull /data/data/com.example/databases/database.db 

echo "removing previous decrypted db, if existent.." 
rm -r decrypted_database.db 

echo "decrypting database.db into decrypted_database.db" 
sqlcipher -line database.db 'PRAGMA key = "encryption_key";ATTACH DATABASE "decrypted_database.db" AS decrypted_database KEY "";SELECT sqlcipher_export("decrypted_database");DETACH DATABASE decrypted_database;' 

這些程序應該被添加到您的PATH:

替換腳本:

  • com。示例與包名
  • database.db名databasefile
  • encryption_key加密密碼
相關問題