2015-02-10 61 views
-1

我正在創建一個具有450 MB的大型數據庫文件的應用程序。我將它存儲在SD卡中。我想保護它,因爲它有一些敏感數據。如果有人能告訴我做到這一點的最佳方式,它將解決我的問題。如何在android中保護450 MB的數據庫?

我也嘗試過一個示例,但它爲小DB文件工作。如果我使用450 MB的Db,則它不能正常工作,並且需要很長時間。

同時請讓我知道是否有可能獲得這麼大的數據。

+0

可能將數據庫保存在服務器上並通過WebServices訪問它。 – 2015-02-10 08:01:13

+0

其實我的應用完全離線。 – 2015-02-10 09:14:35

+0

其實。也許,將來你需要真正的安全。 – 2015-02-10 09:24:42

回答

4

它是一種,但不是真的。您可以對其進行加密,並從服務器獲取解密密鑰。沒有其他方法來保護它,因爲用戶總是可以將SD卡插入SD讀卡器。如果解密密鑰是本地的,他們可以反編譯你的應用程序。

下面是問題 - SQLite無法使用加密文件。所以你必須把它解密到磁盤上,並且可以在那個時候抓取它。所以不,它根本不可能保護數據庫文件。如果你想保留數據的祕密,你最好將信息保存在服務器上,並通過webservice查詢。

+0

感謝您給我寶貴的建議,但是,我沒有使用任何網絡服務,這個應用程序完全離線。 – 2015-02-10 07:16:01

+0

然後你無法保護你的數據。如果您的控制之外的設備具有解密數據和手段,則始終有辦法解決該問題。你可以稍微努力一點,但它仍然是一個最小的努力和對逆向工程的理解問題。 – 2015-02-10 07:21:17

+0

我認爲如果數據庫不在'assets'或'/ data/data/...'文件夾內,那麼USB電纜就足以彈出SD卡的數據庫了。 ;) – 2015-02-10 07:58:42

3

SQLCipher是一種SQLite擴展,它提供對數據庫文件的透明256位AES加密。

以前的sqlcipher是SQLite的開源完整數據庫加密不適用於android。但現在它可用作Android平臺的alpha版本。開發人員已經更新了標準android應用程序'Notepadbot'以使用SQLCipher。

所以這絕對是目前最好也是最簡單的選擇。

+2

但是,如果你的apk中有解密密鑰,它仍然是一個非常微不足道的事情。我不會稱之爲安全的,我只是說它需要一點努力。 – 2015-02-10 07:23:06

+0

對於Android的sqlCipher有任何文件大小限制?我需要加密大於2 GB的數據庫,並且在我的測試中,這會因磁盤I/O錯誤消息而失敗 – Puneet 2015-03-03 18:16:35

+0

Y是否在您的移動設備中存儲了2GB的數據庫? – 2015-03-03 18:17:38