有沒有辦法從已簽名的APK獲取密鑰哈希值? 我們有一個已簽名的Android apk文件,我們希望找出該APK的關鍵哈希值,用於Facebook SDK。 我們可以通過類似jarsigner的方式來實現嗎?
有什麼建議嗎?有沒有辦法從已簽名的APK獲取密鑰哈希值?
回答
對於Windows用戶正從OpenSSL的關鍵,可能會非常棘手一些時間。我總是使用th是找到正確的 簽名..只需將此代碼粘貼到您的onCreate()並運行。
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
更新:
使用的Android工作室(2.1.2):
- 在工作室打開項目,然後點擊圖標的gradle。
- 選擇應用程序 - >任務 - > Android的 - > SigningReport
這將運行gradle這個任務要打印的調試,並與MD5和SHA1鍵
請注意,包名可以是任何安裝在該手機上的東西,所以你可以寫一個新的應用程序,並使用這種方法獲得其他應用程序的密鑰哈希值。 –
使用Gradle 4.1,我沒有看到發佈的報告輸出是'Variant:release Config:none',任何想法爲什麼? –
@ john-salib我們必須設置發佈配置frirst。 https://stackoverflow.com/questions/18460774/how-to-set-up-gradle-and-android-studio-to-do-do-release-build – amalBit
當我建立我的Facebook應用程序。我用我的Android密鑰庫。有一個哈希函數。通常用於Google API。(請參閱此處瞭解說明)。如果您擁有該應用並簽名,這應該是沒有問題,否則..你基本上擰了。沒有辦法。
您可以從here
- 下載openssa要生成,你需要安裝在您的PC OpenSSL的簽名。如果您 沒有一個下載的OpenSSL從這裏
- 在C:,創建的OpenSSL文件夾
- 解壓下載的OpenSSL的zip文件的內容到OpenSSL的 文件夾C:驅動
- 打開命令提示符
- 在命令提示符下移動到openssl的bin,即C:\ openssl \ bin
運行以下命令來生成你的keyhash。在生成 hashkey時,它應該詢問你的密碼。
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64
注:在上面的代碼,請注意,你需要給你的路徑,以用戶(即在我的情況下,它是C:\用戶\ Anhsirk,你只需要改變這種對您的用戶帳戶。
提供密碼機器人,如果不問密碼密鑰庫路徑不正確。
在Linux上釋放證明,我用這個命令從APK拿到鑰匙哈希:
keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64
對於Mac用戶(OS X),因爲沒有grep的-P支持
keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
謝謝你提供的具體問題的答案。我需要比較現有APK的散列與新散列的散列,以確保它們使用相同的密鑰簽名。像在接受的答案中那樣從密鑰庫文件生成哈希是不夠的。 –
對於OSX(不支持grep -P)。 'keytool -list -printcert -jarfile〜/ Downloads/YOURAPKFILE.apk | grep「SHA1:」| cut -d「」-f 3 | xxd -r -p | openssl base64' – caller9
@ caller9您的終端命令,'keytool -list -printcert -jarfile〜/ Downloads/YOURAPKFILE.apk | grep「SHA1:」| cut -d「」-f 3 | xxd -r -p | openssl base64'正是我一直在尋找的。謝謝 – VirtualProdigy
- 1. 有沒有辦法從以前的apk版本文件中獲取私有簽名密鑰庫文件?
- 2. 找到已簽名應用程序的密鑰哈希值
- 3. CM_Get_DevNode_Property_Keys有沒有辦法獲取密鑰的名稱
- 4. 已簽名APK的Android Facebook哈希鍵有時會更改
- 5. 獲取已簽名apk的密碼
- 6. 獲得哈希值的密鑰值
- 7. 從已簽名APK提取文件 - Android Studio密鑰
- 8. 從哈希映射中獲取最大值的密鑰?
- 9. 有什麼辦法在Perl中獲取哈希數組名稱?
- 10. 哈希默認值取決於密鑰
- 11. 如何從PBE密鑰生成器獲取哈希值
- 12. 紅寶石哈希:從排序值中獲取一組密鑰
- 13. 獲取(search.h)哈希搜索表中的所有密鑰
- 14. 有沒有辦法從NSS中提取密鑰
- 15. 從密鑰在Ruby哈希訪問值
- 16. Android Sha1哈希用戶名和密碼沒有正確哈希
- 17. APK簽名錯誤:無法從密鑰存儲區讀取密鑰
- 18. 沒有鍵名的Perl哈希值
- 19. 有沒有一種很好的方法從哈希表中獲取布爾值?
- 20. 獲取從哈希表中的鍵沒有值在Java中
- 21. 龐大的密鑰/哈希鍵/哈希標籤在PHP數組
- 22. 如何在哈希值的哈希值基於公共密鑰
- 23. 簽名APK - 密鑰是否是私鑰?
- 24. 有沒有辦法從maven構建中獲得一致的MD5哈希?
- 25. 從複雜哈希值的Params中獲取特定密鑰的值
- 26. 有沒有辦法以編程方式獲取安裝的RPM簽名密鑰ID?
- 27. 從哈希中獲取值
- 28. 如何從散列哈希中提取密鑰名稱?
- 29. Ruby的哈希使用密鑰值
- 30. 無法從hashref獲取哈希值
嘗試檢查[this](http://stackoverflow.com/questions/11864700/signed-apk-has-different-key-hash-for-facebook)回答 – user1283633