有没有办法从签名APK获取密钥哈希?

Zhe*_* Li 30 android facebook codesign

有没有办法从签名APK获取密钥哈希?我们有一个签名的Android apk文件,我们想找到这个APK的密钥哈希,用于Facebook SDK.我们可以通过像jarsigner这样的东西来做吗?
有什么建议?

ama*_*Bit 39

对于从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) {

  }
Run Code Online (Sandbox Code Playgroud)

更新:

使用Android studio(2.1.2):

  1. 在工作室上打开您的项目,然后单击gradle图标.
  2. 选择你的应用程序 - >任务 - > android - > SigningReport

这将运行一个gradle任务,该任务将使用md5和sha1键打印调试和发布证书


use*_*297 38

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

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

对于Mac用户(OS X),因为没有grep -P支持

keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64

  • 对于OSX(没有grep -P支持).`keytool -list -printcert -jarfile~/Downloads/YOURAPKFILE.apk | grep"SHA1:"| cut -d"" - f 3 | xxd -r -p | openssl base64` (14认同)

Sha*_*wal 9

你可以从这里下载openssa

  1. 要生成签名,您需要在PC上安装openssl.如果你没有从这里下载openssl
  2. 在C:中,创建openssl文件夹
  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
    
    Run Code Online (Sandbox Code Playgroud)

注意:在上面的代码中,请注意您需要提供用户的路径(例如,在我的情况下,它是C:\ Users\Anhsirk,您只需要为您的用户帐户更改此信息.

给密码作为android.如果没有要求输入密码,则密钥库路径不正确.