找到已签名应用的密钥哈希值

Jam*_*mes 22 android keystore keytool hashtag

我已经签署了我的应用程序,并将其导出到我桌面上名为app的文件夹中,该文件夹是我的应用程序本身和密钥库.如何找到可以复制到facebook开发者页面的密钥哈希.我有openssl安装,但似乎无法生成密钥哈希我已经在堆栈上尝试了许多其他线程,似乎没有任何帮助,谢谢

詹姆士

Sel*_*vin 50

  1. 您应该知道密钥库文件在哪里.对我来说是C:\Users\Selvin\Desktop\selvin.kp
  2. 您应该知道密钥库中的别名.对我来说是selvin
  3. 你应该知道keytool的路径. C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
  4. 你应该知道openssl的路径. C:\OpenSSL-Win32\bin\openssl.exe
  5. 您应该知道密钥库的密码.对我来说是嘿嘿嘿

然后,你应该打电话:

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe"-exportcert -alias selvin -keystore c:\ users\selvin\desktop\selvin.kp | C:\ OpenSSL-Win32\bin\openssl sha1 -binary | C:\ OpenSSL-Win32\bin\openssl base64

用适当的路径替换我的路径和别名.

然后你应该看到:

输入密钥库密码:

输入您的密码,你应该得到这样的东西: NfhDlIH7XWJzUZRjL+pZySrMX1Q=

编辑:NfgDlIG7XWJzUZRUL+bZySrMX1Q=< - 是一个糟糕的哈希.或者你很幸运,你的钥匙发生了同样的碰撞

错误:keytool错误:java.lang.Exception:别名不存在

如果哈希不工作:

首先,打电话

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe"-exportcert -alias selvin -keystore c:\ users\selvin\desktop\selvin.kp

输入密码并阅读错误

如果你不记得你的别名,keytool error: java.lang.Exception: Alias <selvinn> does not exist我用selvinn来表示错误.

有关所有条目/别名的列表:

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe -list -keystore c:\ users\selvin\desktop\selvin.kp

第二次编辑

在此输入图像描述


小智 21

对于那些仍在苦苦挣扎的人,我发现正确遵循这些步骤肯定会有效,但是第一次正确使用它们可能非常具有挑战性,实际上我发现有时候处理某些别名时指纹的base64转换"不起作用" (哈希由于某种原因被截断).我已经编写了各种批处理文件,这些批处理文件已经将大部分已经提到的指令拉到了一起,所以我不排除那里的问题.

但是,基本上大多数人都处于openssl阶段(要么找不到它,要么不知道如何使用它,或者Windows管道没有正确地将SHA1导出的输出链接到base64转换输入).

要解决这个问题,您可以使用一种可能更容易理解的替代方法.基本上facebook API需要的是用于指纹APK的SHA1哈希的base64表示(编码).为此,您只需列出密钥库:

"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt
Run Code Online (Sandbox Code Playgroud)

显然,您需要根据自己的设置更改keytool可执行文件的路径,并将"Path-to-your-keystore"和"KeystorePassword"替换为您的密钥库路径和密码!结果应该是在当前文件夹中创建文件"sometext.txt",然后您可以在任何文本编辑器中打开该文件.文本文件将列出所有密钥库别名'及其各自的MD5和SHA1哈希值为十六进制字符串.

现在只需找到用于签署APK的别名,复制SHA1哈希,并使用任何在线十六进制到base64转换器将其转换为facebook所需的base64编码格式.您可以通过Google搜索"在线十六进制到base64转换器"找到在线转换器.我一直在使用这个,因为你可以直接将文本文件中的字符串复制并粘贴到提供的框中,它将删除分隔每个十六进制字节的冒号.

最后一点(有点明显但是......)只复制并粘贴十六进制字符串而不是SHA1:前缀!

希望这有助于某人; 它肯定适合我!


Eve*_*aak 14

首先,我要感谢Selvin!

这个答案几乎与Selvin的答案完全相同,但它还需要3个小时才能完成它的工作:P所以为真正的新手提供了更多的教程

如何从密钥库中获取hashKey

  • 首先从谷歌代码安装OpenSSL并将其放入您的C:\文件夹 下载链接
  • 找到keytool程序位置(默认在java文件夹中)
  • 找到密钥库位置(有一个调试默认值)

location keytool C:\ Program Files(x86)\ Java\jdk1.xxx)\ bin\keytool location openssl C:\ OpenSSL-Win32\bin\OpenSSL location(debug)keystore C:\ Users [usernamepc] .android\debug.密钥库

在windows中打开cmd(start-> run-> cmd)并导航到keytool位置或复制粘贴以下字符串,注意你不能使用ctrl + v但是鼠标右键单击

cd c:\program files (x86)\java\jdk1.7.0_01\bin
Run Code Online (Sandbox Code Playgroud)

当在正确的目录中粘贴此字符串在cmd行中:

keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64
Run Code Online (Sandbox Code Playgroud)

"C:\ OpenSSL-Win32\bin\openssl"是opensssl.exe的路径,用openssl.exe的路径替换它

确保你更改你的电脑名称的[usernamepc],你可以看到我的情况下它是charx.此外,java jdk xxxx的目录取决于您的版本.

cmd应显示hashkey

我的调试文件的哈希键是

h1GdQbgB8b/liCG+acmZWkgIRHA=
Run Code Online (Sandbox Code Playgroud)


小智 9

Eclipse的解决方案(适合像我这样的懒人).

选择Eclipse中的任何项目,导出 - Android应用程序,输入密钥传递等,在底部的最后一页,您将看到MD5:.... SHA1:....

复制SHA1字符串并将其粘贴到任何HEX-Base64在线转换器中(例如:http://tomeko.net/online_tools/hex_to_base64.php)

恭喜!你已经获得了Facebook Dev Console所需的密钥哈希.