使用keytool获取证书的MD5签名

时间:2011-10-31 13:05:16

标签: java android key keytool

我需要为我的应用程序获取Google地图密钥,为此,我需要我的证书的MD5签名。如在互联网上看到的,我使用“keytool”来获取它:

keytool -list -alias mykey -keystore mykeystore

问题是答案是SHA1签名而不是MD5签名。

我使用的是JDK 1.7。

我做错了什么?

提前感谢你花时间去帮助我。

5 个答案:

答案 0 :(得分:3)

还有另一篇关于同一事件的帖子How can I get the MD5 fingerprint from Java's keytool, not only SHA-1?

我猜JDK 1.7默认为SHA1。要解决此问题,以下方法有效:

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

我试过这个,它对我有用。它为您提供MD%,SHA1,SHA256和签名算法名称。按此顺序。

答案 1 :(得分:1)

keytool -exportcert -alias alias -keypass keypass -keystore ./test.keystore -storepass 123456 | md5sum

答案 2 :(得分:1)

你好,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 中):

MinGW screenshot

答案 3 :(得分:0)

您是否尝试过keytool命令:

$ keytool -list -keystore ~/.android/debug.keystore

有关获取Map API密钥的更多信息,请访问:http://code.google.com/android/maps-api-signup.html

更新

当你使用JDK 1.7时,它的keytool有一个新的命令行参数,即-keyalg。

我知道你可以指定-keyalg RSA,所以也许-keyalg MD5会给你正确的密钥。

答案 4 :(得分:0)

回到java 1.6解决。