我选择了谷歌播放应用程序签名,我知道谷歌更改了应用程序的签名密钥,我找到了沙1证书,但无法找到密钥。
如何获取我发布的应用程序的keyhash有没有办法从证书中提取它?
答案 0 :(得分:101)
您可以使用下一个命令将十六进制格式的SHA-1哈希值(如播放控制台中所示)转换为base64哈希:
echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64
输出:
M05IhBlQOh9jpg/2ocIx5QE4VS4=
例如,在设置Facebook应用程序时可以使用此哈希值。
答案 1 :(得分:36)
您可以从Sha1证书签名中提取keyhash。密钥哈希通常以下列方式提取:
public static String getKeyHash(final Context context) {
PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
if (packageInfo == null)
return null;
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e);
}
}
return null;
}
您可以看到SHA-1版本的签名是Base64编码的。
在Google Play开发者控制台的App Signing菜单下,您会看到Sha-1证书签名,如下所示:
SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9
基本上,您需要做的是将其更改为字节数组,并对该字节数组进行Base64编码。你可以这样做:
byte[] sha1 = {
0x3B, (byte)0xDA, (byte)0xA0, 0x5B, 0x4F, 0x35, 0x71, 0x02, 0x4E, 0x27, 0x22, (byte)0xB9, (byte)0xAc, (byte)0xB2, 0x77, 0x2F, (byte)0x9D, (byte)0xA9, (byte)0x9B, (byte)0xD9
};
Log.e("keyhash", Base64.encodeToString(sha1, Base64.NO_WRAP));
您可以将此密钥注册到Facebook android登录设置或任何您喜欢的位置。
答案 2 :(得分:3)
答案 3 :(得分:0)
回显“ Google在Play控制台中生成的应用签名密钥” | xxd -r -p | “ openssl路径” base64
答案 4 :(得分:0)
首先需要同样重要的工具
1.OpenSSl:安装在你的电脑中Download Here 2.在您的个人电脑或笔记本电脑中安装 Java 程序Download Now
只需运行 commond promt 1.转到您的目录 2.cd 程序文件 3.选择你安装java程序的位置 然后复制所有没有 c 驱动器的目录并通过 cd 在 commond promt 中的目录 4.keytool -exportcert -alias gci -keystore D:\folder name where you place your release key |C:\openssl\bin\openssl sha1 -binary |C:\openssl\bin\openssl base64