Cómo Hash String usando SHA-1 con la clave?
El tiempo que usé para desarrollar aplicaciones en iPhone estaba convirtiendo String a SHA1 con dos combinaciones:
- Datos
- Llave
Ahora estoy desarrollando una aplicación de Android y no hice ningún ejemplo de cómo calcular SHA1 con clave.
- SHA1 en Java y PHP con resultados diferentes
- Cómo SHA1 hash una cadena en Android?
- Android HMAC-SHA1 Diferente de Java estándar HMAC-SHA1
- Problemas con la implementación hash SHA1 en Android
- SHA1 Tecla para DEBUG & RELEASE ANDROID STUDIO MAC
Estoy muy agradecido de cualquier orientación o ayuda.
[El código que uso actualmente]
private void convertStringToSHA1() { String sTimeStamp = new SimpleDateFormat("MM/dd/yyyy HH:MM:SS").format(new java.util.Date()); String sStringToHash = String.format("%1$s\n%2$s", "Username",sTimeStamp); MessageDigest cript = MessageDigest.getInstance("SHA-1"); cript.reset(); cript.update(sStringToHash.getBytes("utf-8")); sStringToHash = new BigInteger(1, cript.digest()).toString(16); }
- ¿Necesito diferentes claves SHA1 para realizar mapas de Google
- Propósito del certificado de firma de depuración de Android / Firebase SHA-1
- Android: Google Map v2 no muestra mapa para la versión apk
- Impresión de certificado SHA1
- Cómo obtener la huella digital SHA1 de Mavericks
- Keytool genera huella digital SHA1 en lugar de MD5?
- ¿Cómo puedo obtener la huella dactilar MD5 del keytool de Java, no sólo SHA-1?
- Obtenga el certificado de huella digital SHA1 en Android Studio para Google Maps
Prueba algo así:
private String sha1(String s, String keyString) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException { SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(key); byte[] bytes = mac.doFinal(s.getBytes("UTF-8")); return new String( Base64.encodeBase64(bytes)); }
SecretKeySpec docs.
Otra solución sería usar la biblioteca de códec de apache commons:
@Grapes( @Grab(group='commons-codec', module='commons-codec', version='1.10') ) import org.apache.commons.codec.digest.HmacUtils HmacUtils.hmacSha1Hex(key.bytes, message.bytes)
- ¿Disminuye la animación deslizante entre las actividades de Android?
- Cómo Canvas.drawText () realmente dibuja el texto?