【问题标题】:Android : debug keystoreAndroid:调试密钥库
【发布时间】:2014-02-21 17:56:08
【问题描述】:

我正在尝试使用以下命令获取 facebook (Native Android App) 登录的哈希键

C:\Program Files\Java\jre6\bin>keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Combitech\.android\debug.keystore"

我输入了密码“android”,但我得到了一些输出,而不是哈希键,例如跟随

☺☺♂♣ 071♂0      ♠♥U♦♠‼☻US1►0♫♠♥U♦
431004061248Z071♂0      ♠♥U♦♠‼☻US1►0♫♠♥U♦
☺☺☺♣ ♥é☺☼ 0é☺0é☺"0
☺☺♂♣ ♥é☺☺ I$F╠≥C½?k½~U▬éïP▄ûπ^?╢Äïï▲D╓♣╥h☺⌡═Æ╠■≥        ,♦Wm#≥W▓♦↓┴1¡┼╩ú♀⌠,-62º ═V¶■‼   ûªE¢⌂φg╢çpSúuαΩ√:ôp∩<û╕úxj↓╠G♠=↔x ╥s0²↓¬}é←êR╜s╜↓■6║/6HεC≥Éq1J═α┐3í2PU╓i-←ë¿Φαπ°Åφε÷àX░R‼   ☺Lje      -w╘²L▲♣╧♦'7←âDτ╜
╤Ω▲£6uü░K■o↕ö§q┼6▌⌂(≡}º3EC┴bo>√ßS─▌a«¼╡τ▐ïñºñ¢._w]¥±▒0'σ√»?oÄ╙⌠X»C█2â1)√7zod

任何人都知道如何解决这个问题。

【问题讨论】:

  • 你想获取 SHA1,MD5 密钥吗?
  • 我想获取原生 Android 应用的密钥哈希。

标签: java android android-keystore


【解决方案1】:

要显示 SHA1 哈希(Google API 需要)和所有其他哈希,请改用以下命令:

keytool -list -v -keystore "C:\Users\Combitech\.android\debug.keystore"

【讨论】:

  • 对于 Mac 上的任何人来说,Android 调试密钥库的路径是 ~/.android/debug.keystore
【解决方案2】:

您要查找的命令可能是:

"C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe" -exportcert -alias androiddebugkey -keystore "C:\Users\Combitech\.android\debug.keystore" | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64

提示:

  • 最好使用keytool.exe位置的完整路径以及openssl的完整路径。
  • 不要忘记将密钥库路径更改为您的路径"C:\Users\Combitech\.android\debug.keystore"

更多信息here

【讨论】:

  • 用您的密钥库别名和路径文件名修复
【解决方案3】:

您可以从 Eclipse 本身获取 MD5 指纹和 SHA1 指纹。试试这个:

Windows > 首选项 > Android > 构建

请注意,将有两个不同的密钥,一个是默认密钥,另一个是用于应用开发的自定义密钥库。

【讨论】:

    【解决方案4】:

    尝试如下。并确保您调试的密钥库文件是正确的。

    您应该将'-v' 添加到您的keytool 命令中。你的命令中的-v 将获得 MD5、SHA1 和 SHA256 中的指纹。

     keytool -list -v -keystore C:\Users\Combitech\.android\debug.keystore
    

    您不需要在 debug.keystore 文件路径上添加双引号。

    【讨论】:

      【解决方案5】:

      试试这个代码。它会在你的日志猫中返回哈希键。 并且不要忘记更改包名

      try {
                  PackageInfo info = context.getPackageManager().getPackageInfo(
                          "com.example.package", PackageManager.GET_SIGNATURES); //Your package name here
                  for (Signature signature : info.signatures) {
                      MessageDigest md = MessageDigest.getInstance("SHA");
                      md.update(signature.toByteArray());
                      Log.v("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                      }
              } catch (NameNotFoundException e) {
              } catch (NoSuchAlgorithmException e) {
              }
      

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多