问题描述
我选择了 google play 应用签名,我了解 google 更改了应用的签名密钥,我找到了 Sha 1 证书但找不到 keyhash.
I have opted for google play app signing and i understand that google changes the signing keys for the app and I found the Sha 1 certificate but couldnt find the keyhash .
如何获取已发布应用的 keyhash 有没有办法从证书中提取它?
How can i get the keyhash of my released app is there a way to extract it from the certificate?
推荐答案
您可以从 Sha1 证书签名中提取 keyhash.密钥哈希通常通过以下方式提取:
You can extract keyhash from the Sha1 certificate signature. Key hashes are usually extracted in the following way:
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 编码的.
You can see that SHA-1 version of signature is Base64 encoded.
在 Google Play 开发者控制台的 App Signing 菜单下,您将看到如下所示的 Sha-1 证书签名:
Under App Signing menu in Google play developer console, you will see Sha-1 certificate signature that looks like this:
SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9
基本上,您要做的就是将其更改为字节数组,然后 Base64 对该字节数组进行编码.您可以执行以下操作:
Basically, what you have to do is to change this into a byte array and Base64 encode that byte array. You can do something like:
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 登录设置或任何您喜欢的地方.
You can register this keyhash to facebook android login settings or wherever you like.
这篇关于Google Play 应用签名密钥哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!