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
- No se puede usar keytool y OpenSSL para Facebook Instalación de Android SDK
- Nunca he definido ninguna contraseña a mi almacén de claves y alias, así que ¿cómo se crean?
- ¿Cómo desarrollar una aplicación de Android con google maps API en varios equipos?
- Cómo asignar "Development Key Hash" para un dispositivo y no un emulador
- Android - el apk debe estar firmado con los mismos certificados que la versión anterior
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 …
- Transferencia de la aplicación de Android a otro desarrollador
- Hash clave para Facebook Android SDK
- Encuentra el hash clave para una aplicación firmada
- Acceso denegado al crear keystore para la aplicación de Android
- Android: Analizar el error al analizar el manifiesto. Descontinuación de la instalación
- ¿Cómo puedo encontrar y ejecutar el keytool
- ¿Puedo fusionar varios archivos de keystore de Android en uno?
- Android Development: Keytool, la creación de un almacén de claves?
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.
- ListView setText en una posición determinada
- Cómo olvidar la opción "Nunca preguntar de nuevo" en el diálogo de permisos de ejecución de Android M