Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google play app signing key hash

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?

like image 329
vky Avatar asked Jun 04 '17 15:06

vky


People also ask

How do I get the SHA key from the Google Play Console?

If you've published your app using Play App Signing, a requirement when using Android App Bundle, you can get your SHA-1 from the Google Play Console on the Release > Setup > App Integrity page.

How do I get the app signing key?

Open Play Console and go to the Play App Signing page (Release > Setup > App integrity). In the “Upgrade your app signing key” card, select Request key upgrade. Select an option to upgrade your app signing key to all installs on Android Y and above.

What is a Google Play store key?

The Google Play License Key is a cryptographic key provided by Google for your app in the Play Store. Singular can use the Key to help validate information coming from Google and improve your protection from attribution fraud.


2 Answers

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.

like image 74
Alex Vasilkov Avatar answered Oct 11 '22 06:10

Alex Vasilkov


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.

like image 30
CoderSpinoza Avatar answered Oct 11 '22 07:10

CoderSpinoza