有没有什么办法从签名的APK获取密钥哈希值?

有没有什么办法从签名的APK获取密钥哈希值? 我们有一个已签名的Android apk文件,我们想要找出这个APK的关键哈希,为Facebook SDK。 我们可以通过像jarsigner这样的东西来做到吗?
有什么build议么?

Solutions Collecting From Web of "有没有什么办法从签名的APK获取密钥哈希值?"

对于从openssl获得密钥的Windows用户,可能会有些棘手。我总是使用这个来find正确的签名。只需将此代码粘贴到您的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):

  1. 在工作室打开你的项目,然后点击gradle图标。
  2. select你的应用程序 – >任务 – > android – > SigningReport

这将运行一个gradle任务,该任务将使用md5和sha1键打印debugging和释放证书

在linux上,我使用这个命令从apk获取密钥哈希:

  keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64 

你可以从这里下载openssa

  1. 要生成签名,你需要在你的电脑上安装openssl。 如果你没有从这里下载openssl
  2. 在C:中,创buildopenssl文件夹
  3. 将下载的openssl zip文件的内容解压缩到C:盘的openssl文件夹中
  4. 打开命令提示符
  5. 在命令提示符下移动到openssl的bin,即C:\ openssl \ bin
  6. 运行以下命令来生成你的keyhash。 在生成hashkey时,它应该询问你的密码。

     keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64 

注意:在上面的代码中,注意你需要给你的path给用户(即在我的情况下,它是C:\ Users \ Anhsirk,你只需要改变你的用户帐户。

将密码设为android 。 如果它不要求密码,你的密钥库path是不正确的。

当我build立我的Facebook应用程序。 我用我的Android密钥库。 有一个哈希函数。 常用于Google API。(请参阅此处了解说明)。 如果您拥有该应用并签名, 这应该是没有问题,否则你基本上拧了。没有办法。