¿Cómo puedo hacer un hash con alguna cadena sha256
en Java? ¿Alguien sabe de alguna biblioteca gratuita para esto?
210
¿Cómo puedo hacer un hash con alguna cadena sha256
en Java? ¿Alguien sabe de alguna biblioteca gratuita para esto?
Respuestas:
SHA-256 no es una "codificación", es un hash unidireccional.
Básicamente, convertirías la cadena en bytes (por ejemplo, usando
text.getBytes(StandardCharsets.UTF_8)
) y luego hash los bytes. Tenga en cuenta que el resultado del hash también serían datos binarios arbitrarios, y si desea representar eso en una cadena, debe usar base64 o hexadecimal ... no intente usar elString(byte[], String)
constructor.p.ej
fuente
"UTF-8"
literal en Java 7+: una excepción marcada menos de la que preocuparse.Creo que la solución más fácil es usar Apache Common Codec :
fuente
Otra alternativa es Guava, que tiene un conjunto de utilidades Hashing fáciles de usar . Por ejemplo, para trocear una cadena usando SHA256 como una cadena hexadecimal, simplemente haría:
fuente
Ejemplo completo de hash para encadenar como otra cadena.
fuente
Si está utilizando Java 8, puede codificarlo
byte[]
haciendofuente
fuente
0xff
? No produce nada, ¿verdad?fuente
Rastreé el código de Apache
DigestUtils
ysha256
parece volver a los valores predeterminadosjava.security.MessageDigest
para el cálculo. Apache no implementa unasha256
solución independiente . Estaba buscando una implementación independiente para comparar con lajava.security
biblioteca. Solo para tu información.fuente
Este fue mi enfoque usando Kotlin:
fuente
[B@188363e
no la contraseña cifrada. Además, parece ser diferente cada vez que se llama a esta función.return hash.fold("", { str, it -> str + "%02x".format(it)})
cuál devuelve la contraseña cifrada y no el objeto en sí.Aquí hay una forma un poco más eficaz de convertir el resumen en una cadena hexadecimal:
¿Alguien sabe de una manera más rápida en Java?
fuente
Puede usar MessageDigest de la siguiente manera:
fuente
En Java 8
fuente
En Java, la clase MessageDigest se usa para calcular el valor de cifrado criptográfico. Esta clase proporciona la función hash criptográfica ( MD5 , SHA-1 y SHA-256 ) para encontrar el valor hash del texto.
Ejemplo de código para usar el algoritmo SHA-256.
fuente
Esto es lo que me han utilizado para el hash:
Salida: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
fuente
Puede llamar al método anterior con diferentes algoritmos, como a continuación.
Puede consultar este enlace para completar la solicitud.
fuente