Keytool genera hash de clave de 32 caracteres en vez de 28

Estoy utilizando el siguiente comando para generar hash clave para la consola de aplicaciones de Facebook para Android

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

Como se dijo en la ayuda de SDK de desarrolladores de Facebook

Según la página de ayuda y también la consola de desarrolladores, el hash de clave debe tener 28 caracteres, sin embargo el keytool está generando clave de 32 caracteres.

Versión de Java: jdk1.8.0_31 SO: Windows 7

Generando para android.

EDITAR

Según sugerencia de @ Shreyash-mashru, utilicé el código siguiente para conseguir el 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()); } 

Sin embargo, si alguien todavía puede ayudarme a entender por qué la herramienta de línea de comandos está generando 32 caracteres de largo hash clave en lugar de 28 …

Apareció este problema también, para mí estaba usando Windows PowerShell y se mantuvo la generación de una clave de 32 caracteres. Cuando cambie al cmd viejo llano funcionó como esperado.

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

Esto está funcionando bien para mí. Pruébalo otra vez.

Estaba teniendo el mismo problema. Tenía algo que ver con el uso de mi versión existente de openSSL (64 bits). Descargé la versión de 32 bits de aquí y la instalé en c: \ openSSL. El comando a continuación, señala a esta versión de SSL y tengo mi hash de 28 caracteres.

Keytool -exportcert -alias androiddebugkey -keystore "C: \ Usuarios \ USERNAME.android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1-binario "C: \ OpenSSL \ bin \ openssl" base64

Espero que esta respuesta no es demasiado tarde (sé que la pregunta es más de un año, pero llegué aquí desde el primer resultado de una búsqueda de Google en este tema).

El hash generado es de 32 caracteres porque hay un retorno de carro y una nueva línea agregada al final. Para solucionar esto, puede:

Elimine los últimos 5 caracteres del hash y añada un "=" al final. Por ejemplo: "1234567890abcdefghijklmnopqrstuv" (32 caracteres) -> "1234567890abcdefghijklmnopq =" (28 caracteres)

O

Pop abrir una consola javascript, y utilizar:

 btoa(atob(hashString).slice(0, -2)) 

Donde "hashString" es su hash de 32 caracteres.

  • el ensamblaje del gradleRelease utiliza la llave / el certificado incorrectos
  • AndroidDebugKey Keystore fue manipulado, o la contraseña era incorrecta
  • Openssl no se reconoce como un comando interno o externo
  • Generar clave de hash para la aplicación utilizando facebook sdk
  • Cacerts.bks no existe
  • Obtener Android Google Map v2 trabajando en la versión de lanzamiento mediante la generación de huella digital SHA1 para la clave de la API
  • No se encontró cadena de certificados, cómo arreglar y publicar en Google Play Store?
  • Android keystore dañado
  • Keytool no pide contraseña (usando Facebook lib con android)
  • Keytool con Android SDK de Facebook
  • Android Marketplace: ¿Los detalles (nombre, etc) en el almacén de claves son visibles para el usuario?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.