2016-02-13 107 views
0

我在我的Java代码(APK)中使用了硬编码字符串(APIkey),但可以通过很多工具轻松进行反编译。我知道我可以通过加密来保护。但是如果黑客反编译我的Java并找出加密和解密代码呢?有没有更好的方法来做到这一点?在Android的Java代码中保护硬编码值(api键)

+0

我是这个问题会帮助你http://stackoverflow.com/questions/30359439/how-can-i-securely-store-and-retrieve-api-keys-for-an-android-application - 写 – Sandeep

回答

0

您应该将您的密钥添加到build.gradle文件中。这些文件不包含在您的apk中。 Infact这些只是用来签署你的应用程序并创建一个发布版本。

signingConfigs { 
    release { 
     storeFile file("../myapp.jks") 
     storePassword "mypassword" 
     keyAlias "My_App" 
     keyPassword "mykeypassword" 
    } 
    debug { 
     storeFile file('../debug.keystore') 
     storePassword 'android' 
     keyAlias 'androiddebugkey' 
     keyPassword 'android' 
    } 
    } 
    buildTypes { 
    release { 
     minifyEnabled false 
     debuggable false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.release 
    } 
    debug{ 
     debuggable true 
     minifyEnabled false 
     signingConfig signingConfigs.debug 
    } 
    } 
+0

嗨感谢您的答复。我认为这应该工作,但如果他调试应用程序并找出数据呢? –

+0

调试时无法获取密钥和密钥密码。 密钥和证书已加密并存储在/ data/misc/keystore中。但是,由于它们已被系统存储,所以您无权访问或解密它们。另外,这个没有公共的API。 如果有帮助请upvote并接受答案:) –