JDK 7更改了keytool输出

我正在使用JDK的keytool来生成Google Maps API密钥指纹。 虽然被拒绝多次,但我意识到我最近将JDK升级到了1.7。 所以我将我的目录切换到JDK6(感谢上帝,旧版本仍然存在。),并重复相同的命令:

D:\.android>"C:\Program Files\Java\jre6\bin\keytool" -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android 

和邦! 有用。 原来JDK7生成了SHA1指纹而不是MD5,这导致我拒绝提交给谷歌。 所以我想知道为什么新版本的JDK会发生这种情况。 任何人都有一些线索?

keytool命令具有参数-keyalg ,该参数采用算法名称并根据该算法生成密钥。 据我所知,它只是意味着该命令的默认算法已经改变。

我不知道这是一个有意识的选择还是一个错误 – 你可能想把它报告给Oracle。

keytool.exe -v为您提供不同的指纹,如MD5等。

例如:C:[jedk path] \ bin \ keytool.exe“-v -list -keystore”C:\ Document s和Settings \ Administrator.android \ debug.keystore“

使用-digestalg SHA1 -sigalg MD5withRSA和jarsigner。

详细说明接受的答案:

使用JDK 1.7,我遇到了授权失败问题。 我终于想出了如何使用SHA1生成正确的调试密钥库。 这是我使用的命令:

 keytool -genkey -v -keyalg RSA -sigalg SHA1withRSA -keystore "%USERPROFILE%\.android\debug.keystore" -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US" 

生成它之后,您可以使用以下命令查看它:

 keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 

签名算法现在应该读为“SHA1withRSA”。 复制SHA1指纹并将其粘贴到Google控制台“Android应用程序密钥”中,您应该很高兴。