2012-05-18 25 views
1

我偶然發現了這樣一個簡單的問題:對於我來說,打開數據庫或使用受保護的服務的最佳方式是什麼,從某種意義上說,只有在提供正確密碼的情況下才能正常工作。在Android的代碼中存儲安全服務/文件/數據庫密碼安全嗎?

  1. 我已經看過SharedPreferences作爲獲取信息的方式,但我需要創建一個應用程序,它會在第一種情況下存儲密碼,這本身意味着我需要把它寫在代碼的某個地方或其他

  2. 客戶經理是我考慮的另一種方式。

  3. 以AES加密格式,文件或sqlite數據庫存儲實際密碼。但這意味着密鑰必須在代碼中。

我一直認爲這是人們面臨的一個相當普遍的問題,我想知道人們是如何解決它!

+0

這可能也有幫助http://stackoverflow.com/q/9838684/1007273 – hovanessyan

+0

我不明白爲什麼有人甚至-1我的qsn ... – gaara87

回答

-2

在我看來,你可以使用AES加密來加密你的數據。但主要問題是關鍵不安全。 APK可以被反編譯。所以有一種方法可以隱藏密鑰。植入有點困難。使用本機編碼(NDK)。你可以在C文件中編寫你的密鑰,並在編譯之後得到一個.SO文件。這個文件可以包含在你的項目中。從java調用C函數並返回密鑰。但是另一個問題是,當您打開.SO文件時,用C語言編寫的字符串是可見的。因此,分配您的密鑰生成ascii代碼,並使用ASCII中的ascii代碼創建一個字符串。

+0

將密鑰存儲在您的代碼中(包括native和ascii)不提供安全性,它提供了默默無聞的功能。這可能是你可以接受的,取決於失去訪問受保護數據的價格,但明白用這種方法,有人想讓數據_will_得到它。 – mah

+0

.SO文件無法反編譯。在C本身使用ascii創建一個字符串 –

+0

那麼爲什麼不使用ascii代碼而不帶C-NDK的東西呢? – waqaslam