2014-01-30 60 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

如果您需要将字符串转换为多种语言,将使用字符串文件。 在你的情况下,你似乎没有。所以静态方式更好,因为你可以更容易地访问它。