2016-02-13 96 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並接受答案:) –