有没有办法从签名APK获取密钥哈希?
我们有一个签名的Android apk文件,我们想找到这个APK的密钥哈希,用于Facebook SDK。
我们可以通过像jarsigner这样的东西吗?
有什么建议吗?
答案 0 :(得分:37)
对于从openssl获取密钥的Windows用户,有时可能会很棘手..我总是使用它来找到正确的 签名..只需将此代码粘贴到您的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 studio(2.1.2):
这将运行一个gradle任务,它将使用md5和sha1键打印调试和发布证书
答案 1 :(得分:37)
在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
答案 2 :(得分:9)
您可以从here
下载openssa运行以下命令以生成keyhash。在生成时 hashkey它应该问你密码。
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64
注意:在上面的代码中,请注意您需要提供用户路径(例如,在我的情况下,它是C:\ Users \ Anhsirk,您只需要为您的用户更改此信息帐户。
将密码设为 android 。如果没有要求输入密码,则密钥库路径不正确。
答案 3 :(得分:1)
回答为时已晚,但是它是获取Signed应用程序密钥哈希值的快速方法。
安装apk,它可以提取所有应用的密钥哈希。
从以下位置下载:https://apkpure.com/key-hash-key/notimeforunch.keyhash
答案 4 :(得分:0)
当我构建我的Facebook应用程序时。我使用了我的Android密钥库。有一个散列函数。通常用于Google API。(请参阅此处获取说明)。如果您拥有该应用并签名;这应该没有问题,否则......你基本上搞砸了。没办法。
答案 5 :(得分:0)
您还可以使用以下方法从您的 apk 签名密钥库文件中获取 base64 中的 Sha1 哈希(在 Facebook 的情况下需要):-
Mac: keytool -exportcert -alias <KEY_STORE_ALIAS> -keystore <KEY_STORE_PATH> | openssl sha1 -binary | openssl base64
Windows: keytool -exportcert -alias <KEY_STORE_ALIAS> -keystore <KEY_STORE_PATH> | openssl sha1 -binary | openssl base64
您还需要使用 openssl 来执行此命令。
例如:
keytool.exe -list -v -keystore "%LocalAppData%\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android | openssl sha1 -binary | openssl base64
其中,"%LocalAppData%\Xamarin\Mono for Android\debug.keystore"
应替换为用于签署 apk 的密钥库文件的路径(在调试或临时分发时)。