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.

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); } 

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) 
  • Google maps api para android, obteniendo cert SHA1 en lugar de MD5
  • ¿Hacer cifrado SHA1 en Android?
  • Signin de Google Firebase dando estado 12501 (no funciona), en la versión de creación de la versión y jks SHA
  • Firma de una cadena con una clave privada, firma RSA-SHA1 y md5 en Android
  • Cómo agregar SHA-1 a la aplicación Android
  • Descripción de la consola de desarrolladores de Google
  • Android SHA1 liberación keystore no funciona con Google Maps
  • Biblioteca para generar la firma HMAC-SHA1 OAuth en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.