2014-01-30 59 views
0

什麼是存儲應用程序鍵的東西,如一個類API認證爲靜態變量的Android存儲API密鑰文件

public class Keys { 

    public static final int APP_KEY = 4848jffj48j89489; 

} 

VS它們存儲在一個字符串文件的利弊

<string name="app_key">4848jffj48j89489</string> 

我能想象它們存儲在字符串文件(只需要訪問時,變量)的一些內存方面的考慮和優勢,但我不知道這留下可供觀賞的鑰匙,如果APK被反編譯/提取

同樣,我不確定使用靜態變量的所有含義,我認爲它們不會佔用太多內存,但我不確定它們是否可能被垃圾收集並返回null,或者如果鍵可以在反編譯/提取的APK中暴露

無論如何,也許我錯過了其他一些東西,所以任何洞察力的讚賞。

+1

無論您使用何種方法,在apk反編譯時都可以查看密鑰。 – njzk2

+0

@ njzk2 proguard會幫助這個,但是,對嗎? – CQM

回答

1

如果您使用的是API 14或更新版本,請考慮使用Android Keychain或KeyStore。 http://developer.android.com/reference/android/security/KeyChain.html http://developer.android.com/reference/java/security/KeyStore.html

+0

我是,我不明白優於其他方法的明顯優勢,你能否詳細說明一下? – CQM

+0

如果您擔心反編譯和訪問您的API密鑰,那麼可能需要加密。我沒有使用Android Keychain/KeyStore,但它看起來可以用於使用SecretKeyEntry存儲API密鑰:http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html –

1

根據我的經驗,您提到的兩種方法工作差不多。在我看來,靜態變量更容易訪問。垃圾收集不應該是一個問題。在任何情況下,任何人都可以打開你的apk並取出以這種方式存儲的密鑰。按照建議使用Android Keychain或Keystore,您可以在不考慮某些複雜性的情況下隱藏您的密鑰(除了最確定的(沒有什麼是完全安全的,不幸的))的好處。

0

如果您需要將字符串轉換爲多種語言,將使用字符串文件。 在你的情況下,你似乎沒有。所以靜態方式更好,因爲你可以更容易地訪問它。