【问题标题】:How can I get the MD5 fingerprint from Java's keytool, not only SHA-1?如何从 Java 的 keytool 获取 MD5 指纹,而不仅仅是 SHA-1?
【发布时间】:2011-09-12 10:51:32
【问题描述】:

由于我想在我的应用程序中使用 Google 地图,我需要调试证书的 MD5 指纹。我尝试了以下操作:

(这里我从 bin 文件夹中的 C:\Documents and Settings\Administrator.android 复制了 debug.keystore 文件)

C:\Program Files\Java\jdk1.7.0\bin>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

但是得到了以下结果:

androiddebugkey, May 27, 2011, PrivateKeyEntry,Certificate fingerprint (SHA1): "some code"

但是,这无法获取 MAP API 密钥。 SHA1和MD5一样吗?

我应该怎么做才能获得MD5证书?

【问题讨论】:

    标签: android google-maps md5 sha1 fingerprint


    【解决方案1】:

    安装 JDK 1.7 后,keytool 始终默认输出 SHA1 指纹,而不是 MD5。 您可以通过添加 -v 选项来获得 MD5 证书。

    使用以下代码:-

    C:\Program Files\Java\jdk1.7.0\bin>keytool -v -list -alias
    androiddebugkey -keystore debug.keystore -storepass android -keypass android
    

    它也会输出MD5证书。

    【讨论】:

    • 谢谢,-v 选项帮我搞定了
    • 现在 MD5 和 sha1 进程改变了 Google 在我们在这里得到 MD5 之后。我们需要从 Google API 控制台获取 API 密钥。谢谢大家
    • @Ankit-Saxena - 你能回答这个stackoverflow.com/questions/55336382/… -v 选项对我不起作用。
    • 此答案已过时,JDK 8 及更高版本的“-v”选项no more prints MD5
    【解决方案2】:

    要获得 MD5 值和 SHA1...等,请遵循以下规则:

    在此之前不要忘记将 debug.keystore 复制到 Androidkeystore 文件夹中,就像在 C 盘中创建的那样。

    C:\Program Files\Java\jdk1.7.0_05\bin>keytool -v -list -keystore C:\Androidkeyst
    ore\debug.keystore
    

    它在这里问.. 输入密钥库密码:android

    输入你在这里得到的 MD5 & SHA1..etc

    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains ? entry
    
    Alias name: androiddebugkey
    Creation date: ?? ???, ????
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[?]:
    Owner: CN=Android Debug, O=Android, C=US
    Issuer: CN=Android Debug, O=Android, C=US
    Serial number: 67b6344b
    Valid from: Mon Jun 18 20:33:56 IST 2012 until: Wed Jun 11 20:33:56 IST 2042
    Certificate fingerprints:
             MD5:  C2:61:51:3E:BC:C8:0C:DB:75:B6:E7:C4:90:AD:91:39
             SHA1: CD:5E:8A:0F:4E:0F:2E:FD:92:5E:5E:4R:CF:F8:44:33:2C:8C:B8:97
             SHA256: B5:BF:75:60:DB:62:09:49:F1:38:CH:49:18:22:18:95:03:C9:5C:14:F6:
    B0:F4:21:D2:19:B8:FF:38:D2:B9:FD
             Signature algorithm name: SHA256withRSA
    

    注意:如果目录路径中有空格,则必须将其括在引号中。例如使用这种格式:

    -keystore "C:\Users\Your Name\.android\debug.keystore"

    【讨论】:

    • @AnkitSaxena 这个答案更好并且对我有帮助,所以请不要阻止任何人提供具有不同信息的替代答案。感谢 K.krishnan 的回答 +1
    【解决方案3】:

    如果您使用的是 jdk 7:

    使用 -v 选项。

    【讨论】:

    • 请注意提出此问题的日期。除非您认为自己有更好的答案,否则不要回答老问题。
    • 我这样做是因为它解决了我的问题。我现在才遇到问题。如果现在有人遇到同样的问题,我只是想留下一些东西。顺便感谢负2分。 :(
    【解决方案4】:

    获取SHA 1,MD 5的最简单方法是点击Android Studio屏幕角落附近右上角的Gradle。然后点击应用程序的名称(例如 android123(root):它应该是这样的)。之后,您将找到一个 名为 android 的子文件夹,然后单击它以查看 signingReport。它应该在控制台中运行,并且应该向您显示 SHA 1、MD 5。希望对您有所帮助。

    【讨论】:

    • 谢谢!所有其他答案都对我不起作用,但这个答案对我有用。
    • 这可以简化为运行./gradle signingReport
    【解决方案5】:

    添加-v

    keytool 之后和-list 之前

    keytool -v -list
    

    【讨论】:

      【解决方案6】:

      2021 年你好。

      JDK 8 及更新版本的 keytool 不再打印 MD5,即使您尝试标准建议将“-v”选项添加到“keygen -list”命令。

      我猜想 MD5 已经不够安全了,has been removed

      同时还有一些地方,比如亚马逊的“Security Profile Management” for LWA 等,要求你提交证书的 MD5 签名。

      这里有一个命令来传递它(使用 Android Studio 密钥库的密码“android”):

      keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | \
      openssl dgst -md5 
      

      如果你想中间有冒号,那么添加以下“sed”命令:

      keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | \
      openssl dgst -md5 | \
      sed 's/[a-fA-F0-9][a-fA-F0-9]/&:/g; s/:$//'
      

      上述命令适用于 Linux、macOS 甚至 Windows(在 git bash 中):

      【讨论】:

        【解决方案7】:

        将“debug.keystore”文件复制到c:\ 或某个文件夹

        你试着去 c:\Program Files\Java\jdk1.6.25\bin folder 并输入

        c:\Program Files\Java\jdk1.6.25\bin>keytool -list -keystore c:\debug.keystore

        密码是'android'

        【讨论】:

          【解决方案8】:

          -v 标志也提供 SHA1 认证。没有那个标志,你只能得到 MD5 指纹。

          【讨论】:

            【解决方案9】:

            我已通过打开命令提示符(管理员)解决了 Windows 8 中的问题,然后键入:

            C:\Program Files (x86)\Java\jre7\bin>keytool -v -list -keystore C:\<Your Path>\<Your Keystore>
            

            之后,只需转到https://code.google.com/apis/console/

            当他们更改为新界面时,您必须转到左侧的 APIs & auth 选项卡,然后转到 Registered应用程序,选择您现有的 API 密钥来替换它或创建一个新的,使用之前生成的 SHA1 代码。

            这就是我的工作方式。

            【讨论】:

              【解决方案10】:

              JDK 1.7 keytool 总是返回 SHA1 指纹不是真的。看看那里解决问题而不是降级你的JDK:http://code.google.com/p/android/issues/detail?id=19035#makechanges

              【讨论】:

                【解决方案11】:

                在 Eclipse 中使用您的密钥库简单地导出您的项目,在最后一步中您将获得 SHA-1 和 MD-5..

                查看this question了解更多详情。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-12-03
                  • 2023-03-12
                  • 2013-12-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多