Is there any way to get key hash from signed APK?
We have a signed Android apk file, and we want to find out key hash of this APK, for Facebook SDK.
Can we do that by something like jarsigner?
Any suggestions?
For windows users getting the key from openssl, may be tricky some times.. I always use this to find the right signature.. Just paste this code in your onCreate() and run.
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Update:
Using Android studio(2.1.2):
- Open your project on studio and click on the gradle icon.
- Choose your app -> Tasks -> android -> SigningReport
This will run a gradle task that will print the debug and release certificate with md5 and sha1 keys
Variant: release Config: none
, any Idea why? –
Trunkfish On linux, I used this command to get the key hash from an apk:
keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64
For Mac Users (OS X) as there is no grep -P support
keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
–
Languet keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
was exactly what I was looking for. Thank you –
Sweated For windows users getting the key from openssl, may be tricky some times.. I always use this to find the right signature.. Just paste this code in your onCreate() and run.
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Update:
Using Android studio(2.1.2):
- Open your project on studio and click on the gradle icon.
- Choose your app -> Tasks -> android -> SigningReport
This will run a gradle task that will print the debug and release certificate with md5 and sha1 keys
Variant: release Config: none
, any Idea why? –
Trunkfish Unfortunately, it is no longer possible to provide a timely response, but there is an efficient method to obtain the Signed App Key Hash. Please execute the following command in your terminal:
keytool -printcert -jarfile app.apk
Extract the SHA1 value from the output. Then, visit the below website and input the extracted hexadecimal value into the designated field. Afterward, click on the conversion button.
http://tomeko.net/online_tools/hex_to_base64.php
Please retrieve the Keyhash value from the Output (base64) field.
It's too late to answer but its very quick way to get Signed app key hash.
Install apk and it can extract all apps key hash.
Download from: https://apkpure.com/key-hash-key/notimeforunch.keyhash
When I built my Facebook app. I used my Android keystore. There is a hashing function for that. Commonly used in the Google API's.(See there for instructions). If you own the app and signed it; this should be no issue otherwise..your basically screwed.There is no way.
You can also use following approaches for getting Sha1 Hash in base64 (as required in case of facebook) from your apk signing keystore file:-
Mac: keytool -exportcert -alias <KEY_STORE_ALIAS> -keystore <KEY_STORE_PATH> | openssl sha1 -binary | openssl base64
Windows: keytool -exportcert -alias <KEY_STORE_ALIAS> -keystore <KEY_STORE_PATH> | openssl sha1 -binary | openssl base64
You would also need to have openssl for this command.
For example:
keytool.exe -list -v -keystore "%LocalAppData%\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android | openssl sha1 -binary | openssl base64
Where, "%LocalAppData%\Xamarin\Mono for Android\debug.keystore"
should be replaced with path to your keystore file used for signing your apk (while in debugging or adhoc destribution).
keytool -printcert -jarfile 123.apk
or
keytool -printcert -file CERT.RSA
© 2022 - 2024 — McMap. All rights reserved.