如何从 Java 的 keytool 获取 MD5 指纹,而不仅仅是 SHA-1?

问题描述 投票:0回答:12

因为我想在我的应用程序中使用谷歌地图,所以我需要调试证书的 MD5 指纹。我试过以下:

(这里我从C:\Documents and Settings\Administrator.android 复制了bin文件夹下的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
12个回答
193
投票

安装 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证书。


27
投票

要获取 MD5 值和 SHA1...等,请执行以下操作:

在此之前不要忘记将 debug.keystore 复制到类似于在 C 盘中创建的文件夹 Androidkeystore。

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"


15
投票

2021年你好

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

我猜 MD5 不再被认为足够安全并且已被删除.

同时还有像Amazon“Security Profile Management”for LWA等地方要求你提交证书的MD5签名。

这是一个将传递它的命令(使用密码“android”作为 Android Studio 密钥库):

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
投票

如果你使用的是 jdk 7:

使用 -v 选项。


6
投票

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


4
投票

添加

-v

keytool
之后和
-list

之前
keytool -v -list

3
投票

复制'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'


3
投票

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


2
投票

我通过打开命令提示符(管理员)解决了 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 Apps,选择你现有的API密钥来替换它或创建一个新的一,使用之前生成的 SHA1 代码。

我就是这样工作的。


1
投票

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


1
投票

只需在 eclipse 中使用您的密钥库导出您的项目,在最后一步中您将同时获得 SHA-1 和 MD-5..

enter image description here

查看这个问题了解更多详情。


0
投票

正如Paul Crinigan所建议的here您可以获得运行以下命令的MD5哈希:

keytool -exportcert -v -alias keystore_alias -keystore "path\to\keystore\my.keystore" | openssl dgst -md5

地点:

  • keystore_alias
    是你的密钥库的别名,如果你有的话。
  • path\to\keystore\my.keystore
    是您的密钥库文件的路径。

运行命令后,系统会要求您输入密钥库密码,以防您设置了密码。输出将是这样的哈希:

(stdin)= 8a7b562730f9581c2161bf3984e7af5e

MD5 将是每 2 个字符插入冒号

:
符号的输出散列:

8a:7b:56:27:30:f9:58:1c:21:61:bf:39:84:e7:af:5e

© www.soinside.com 2019 - 2024. All rights reserved.