Java 使用keytool获取证书的MD5签名

Java 使用keytool获取证书的MD5签名,java,android,key,keytool,Java,Android,Key,Keytool,我需要为我的应用程序获取谷歌地图密钥,为此,我需要证书的MD5签名。正如在互联网上看到的,我使用“keytool”获取它: keytool -list -alias mykey -keystore mykeystore 问题是答案是SHA1签名而不是MD5签名 我使用JDK1.7 我做错了什么 提前感谢您花时间来帮助我。您是否尝试过keytool命令作为: $ keytool -list -keystore ~/.android/debug.keystore 有关获取地图API密钥的更多信息

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

keytool -list -alias mykey -keystore mykeystore
问题是答案是SHA1签名而不是MD5签名

我使用JDK1.7

我做错了什么


提前感谢您花时间来帮助我。

您是否尝试过keytool命令作为:

$ keytool -list -keystore ~/.android/debug.keystore
有关获取地图API密钥的更多信息,请参见:

更新: 在使用JDK1.7时,它的keytool有一个新的命令行参数-keyalg


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

还有一篇关于这件事的帖子

我猜JDK1.7默认为SHA1。要解决此问题,以下方法已奏效:

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

我试过这个,它对我有效。它为您提供MD%、SHA1、SH256和签名算法名称。按照这个顺序。

回到Java1.6解决了这个问题。

您好,2021年

keytool -exportcert -alias alias -keypass keypass -keystore ./test.keystore -storepass 123456 | md5sum
jdk8及更新版本的keytool不再打印MD5,即使您尝试标准建议将“-v”选项添加到“keygen-list”命令中

我想MD5不再被认为是足够安全和可靠的

同时,还有一些地方,如亚马逊针对LWA的“安全配置文件管理”等,要求您提交证书的MD5签名

下面是一个命令,该命令将传递它(使用android Studio密钥库的密码“android”):

如果要在两者之间插入冒号字符,请添加以下“sed”命令:

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


不是更好。keytool的答案仍然是SHA1签名,-keyalg MD5参数的使用不会改变结果。我得到了一个SHA1签名。谢谢你!!我真的需要这个。救了我一整天。对于JDK 8,您是绝对正确的。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | \
openssl dgst -md5 
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | \
openssl dgst -md5 | \
sed 's/[a-fA-F0-9][a-fA-F0-9]/&:/g; s/:$//'