Keytool generates 32 character long key hash instead of 28

Jalpesh picture Jalpesh · Oct 26, 2015 · Viewed 7.9k times · Source

I am using the following command to generate key hash for Facebook app console for Android

.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64

As told at Facebook developers SDK help

As per the help page and also the developers console, the key hash should be 28 characters long, however the keytool is generating 32 characters long key.

Java version : jdk1.8.0_31 OS : Windows 7

Generating for android.

EDIT

As per suggestion from @Shreyash-mashru, I used the following code to get the keyhash

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "my.package.name",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());

    } catch (NoSuchAlgorithmException e) {
        Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
    }

However if someone can still help me out understand why the command line tool is generating 32 char long key hash instead of 28...

Answer

Paul Cooper picture Paul Cooper · Jan 16, 2017

Came across this problem too, for me I was using windows powershell and it kept generating a 32 character key. When I switch to plain old cmd it worked as expected.