android - 使用 SHA256withRSA 而不是 SHA1withRSA 生成签名

标签 android google-maps-android-api-2

我一直在尝试生成 sha1 key 以便在 windows7 上使用 google maps v2。根据运行以下命令后的谷歌文档:

keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

输出应该类似于此( https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2 )

 Alias name: androiddebugkey
 Creation date: Jan 01, 2013
 Entry type: PrivateKeyEntry
 Certificate chain length: 1
 Certificate[1]:
 Owner: CN=Android Debug, O=Android, C=US
 Issuer: CN=Android Debug, O=Android, C=US
 Serial number: 4aa9b300
 Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
 Certificate fingerprints:
      MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
      SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
      Signature algorithm name: SHA1withRSA
      Version: 3 

我的输出:

    Alias name: androiddebugkey
    Creation date: 12-Jun-2013
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=Android Debug, O=Android, C=US
    Issuer: CN=Android Debug, O=Android, C=US
    Serial number: 57376504
    Valid from: Wed Jun 12 16:22:47 BST 2013 until: Fri Jun 05 16:22:47 BST 2043
    Certificate fingerprints:
             MD5:  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
             SHA1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
             Signature algorithm name: SHA256withRSA
             Version: 3    

   Extensions:

   #1: ObjectId: 2.5.29.14 Criticality=false
   SubjectKeyIdentifier [
   KeyIdentifier [
   0000: 5D 1C 48 72 D9 E2 F0 1A   12 CE 97 CC 1F DA DD F6  ].Hr............
   0010: C9 D0 1E 62                                        ...b
   ]
   ]

但在我的例子中,输出类似但不同。

Signature algorithm name:SHA256withRSA

谁能告诉我如何通过 SHA1withRSA 生成 key 。问这个问题的原因是当我试图在我的 android 应用程序中使用 google maps v2 时。显示以下错误。我猜 SHA256withRSA 可能是导致此错误的原因。这几天我一直遇到授权失败的问题。如果有人能帮助我,那就太好了。谢谢。

Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.

最佳答案

对于遇到此问题的其他人:我很难让 Google Maps API v.2 使用 JDK 1.7 工作——我不断收到授权失败消息。事实上,问题出在签名算法名称上。

我想出了如何使用 SHA1 生成正确的调试 keystore 。这是我使用的命令:

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 应用 key ”中,然后就可以开始了。

请注意:如果 debug.keystore 已经存在,请确保在使用上面的第一个 -genkey 命令创建新 keystore 之前将其删除。如果 keystore 已经存在,它会给你一个 keystore already exists with the given -alias androiddebugkey 的错误

关于android - 使用 SHA256withRSA 而不是 SHA1withRSA 生成签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17088690/

相关文章:

java - 在Android中快速发送大文件

android - 触发android电池充电广播事件

android - 如何让我的按钮在 TextChanger 中可见?

android - Maps api v2 android 我的位置不适用于 2.3.3

android - 如何在 Android 模拟器上运行 Google Map API V2

android - 如何捕捉 ACTION_MEDIA_BUTTON 的按住(长按)

android - 为 Android 应用程序选择 GMS 或 HMS

java - Android map 注释上的按钮

java - 如何在谷歌地图android上显示多个标记

android - 检查当前点是否在路线(路径)上并从匹配的列表中获取这些点