2013-03-13 93 views
3

我在android中開發了使用SQLCipher的應用程序。將數據庫文件保護到應用程序是安全的方法。它對加密工作正常,但我想解密加密的數據庫文件,並希望查看SQLite瀏覽器。如何在android中解密SQLCipher加密文件?

其實我有很多的表格和它的數據可用。現在,如果我想查看加密的數據庫數據,沒有辦法查看它(只有日誌可用來查看數據)。但使用SQLite瀏覽器我看不到它。

我使用

我已經嘗試了許多方法來進行解密,並考慮SQLite的瀏覽器,但它給錯誤「有錯誤發生「info.guardianproject.database.sqlcipher.SQLiteDatabase」:文件不一個sqlite3數據庫「。

任何人都可以幫我解密加密的數據庫文件。

或者我應該複製加密數據庫文件並使用「info.guardianproject.database.sqlcipher.SQLiteDatabase」進行解密並使用它來查看所有表格。

感謝,

米沙勒沙阿

+0

看到這個 - http://stackoverflow.com/a/25132385/847575 – 2014-08-05 06:25:43

回答

-1

侏儒GDA可以做到這一點。下載here

+0

我已經下載並安裝了應用程序,但是當我嘗試使用加密的數據庫打開它時,不允許。它會給出錯誤,因爲「數據庫文件是加密的」,請你幫我解釋爲什麼它不打開SQLCipher加密數據庫文件,在那裏我給了密碼打開它。 – Developer 2013-03-13 11:09:59

2

您需要使用具有SQLCipher擴展作爲其一部分的SQLite實用程序。你可以使用download and build the SQLCipher code on Linux,它應該給你一個sqlite3的實用程序,你可以使用它來訪問數據庫(用適當的PRAGMA語句來指定密碼,等等)。

+0

感謝您分享它。我之前將它用於應用程序並通過示例,但我應該如何解密並將其打開到SQLite瀏覽器。你可以請分享應該解密文件並將其打開到SQLite瀏覽器的示例或Android代碼。 – Developer 2013-03-13 12:30:00

+0

@Mishal:我不知道你認爲「SQLite瀏覽器」是什麼。如果它不是'sqlite3'命令行實用程序,則必須聯繫「SQLite瀏覽器」的作者,並詢問他們是否支持SQLCipher。 – CommonsWare 2013-03-13 12:34:06

+0

我正在使用「info.guardianproject.database.sqlcipher.SQLiteDatabase」爲SQLCipher加密數據庫並希望使用相同的方式解密並希望打開它,因此我可以在一個視圖中查看所有表。 – Developer 2013-03-13 12:36:22

4

我解決了這個問題,使用從設備拉數據庫並解密它。下面的腳本將生成一個解密的數據庫文件。這個文件可以用SQLite查看器打開。

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加密密碼

注: 設備應植根

+0

這仍然說**錯誤:文件被加密或不是數據庫** .in上述語句我只是將database.db替換爲我的文件名。 – CoDe 2016-02-04 06:57:24

+0

@Shubh你需要替換包名,database.db文件名和加密密鑰。如果我有時間,我會更新這個腳本以從命令行獲取參數。 – Tobrun 2016-02-04 08:55:38

+0

是的,我做了同樣的事情。我試過** sqlcipher -line database.sqlite'PRAGMA key =「pass123」; ATTACH DATABASE「decrypted_database.db」AS decrypted_database KEY「」; SELECT sqlcipher_export(「decrypted_database」); DETACH DATABASE decrypted_database;'**我失蹤的任何東西? – CoDe 2016-02-04 08:58:52

0

decrypt.sh腳本幫了我一陣子。但過了一段時間,我發現SQLiteManager開始支持SQLCipher加密數據庫。它有一個漂亮的用戶界面。即使它不是免費的,而且您仍然需要從設備中提取數據庫文件,但我認爲嘗試一下很好。

0

在你的Android應用程序代碼後

dbHelper.getReadableDatabase(DBKEY); 數據庫文件將被解密..通過寫入文件複製代碼複製數據庫文件到一些外部sd卡文件路徑並用任何sqllite工具打開它