Google play app signing key hash

AndroidGoogle Play

Android Problem Overview


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 .

How can i get the keyhash of my released app is there a way to extract it from the certificate?

Android Solutions


Solution 1 - Android

You can convert SHA-1 hash in hex format (as found in Play console, see Release management -> App Signing) into base64 hash using next command:

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

Output:

M05IhBlQOh9jpg/2ocIx5QE4VS4=

This hash can be used for example when setting up Facebook app.

Solution 2 - Android

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;
}

You can see that SHA-1 version of signature is Base64 encoded.

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

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));

You can register this keyhash to facebook android login settings or wherever you like.

Solution 3 - Android

The easiest way would be to copy Facebook's error message and copy the keyhash they were expecting to get from there.

Just make sure you are using your Google Play downloaded app :)enter image description here

Solution 4 - Android

> echo "App signing key generate by google in play console" | xxd -r -p | "openssl path" base64

Solution 5 - Android

firstly required same important tools

1.OpenSSl: intall in your pc Download Here 2.Install Java Programm in your Pc Or Laptop Download Now

Simply Run The commond promt 1.Go to your directory 2.cd Program Files 3.select where java programm you have installed then copy all directory without c drive and past the directory in commond promt with cd 4.keytool -exportcert -alias gci -keystore D:\folder name where place your release key |C:\openssl\bin\openssl sha1 -binary |C:\openssl\bin\openssl base64

for more information Visit here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionvkyView Question on Stackoverflow
Solution 1 - AndroidAlex VasilkovView Answer on Stackoverflow
Solution 2 - AndroidCoderSpinozaView Answer on Stackoverflow
Solution 3 - AndroideladlebView Answer on Stackoverflow
Solution 4 - AndroidAbhijeet PrustyView Answer on Stackoverflow
Solution 5 - AndroidMd Azmal KhanView Answer on Stackoverflow