【发布时间】:2017-06-04 15:00:50
【问题描述】:
我选择了 google play 应用签名,我知道 google 更改了应用的签名密钥,我找到了 Sha 1 证书但找不到 keyhash。
如何获取已发布应用的 keyhash 有没有办法从证书中提取它?
【问题讨论】:
标签: android google-play
我选择了 google play 应用签名,我知道 google 更改了应用的签名密钥,我找到了 Sha 1 证书但找不到 keyhash。
如何获取已发布应用的 keyhash 有没有办法从证书中提取它?
【问题讨论】:
标签: android google-play
您可以使用下一个命令将十六进制格式的 SHA-1 哈希(如在 Play 控制台中找到,请参阅发布管理 -> 应用签名)转换为 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 应用时使用。
【讨论】:
您可以从 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));
您可以将此 keyhash 注册到 facebook android 登录设置或任何您喜欢的地方。
【讨论】:
echo "谷歌在游戏控制台中生成的应用签名密钥" | xxd -r -p | “openssl 路径”base64
【讨论】:
首先需要相同的重要工具
1.OpenSSl:安装在你的电脑上Download Here 2.在您的PC或笔记本电脑上安装Java程序Download Now
简单地运行command promt 1.进入你的目录 2.cd 程序文件 3.选择你安装的java程序 然后复制所有没有c盘的目录,然后用cd复制command promt中的目录 4.keytool -exportcert -alias gci -keystore D:\folder name 在哪里放置你的发布密钥 |C:\openssl\bin\openssl sha1 -binary |C:\openssl\bin\openssl base64
【讨论】: