Al mirar por aquí, así como en Internet en general, he encontrado Bouncy Castle . Quiero usar Bouncy Castle (o alguna otra utilidad disponible gratuitamente) para generar un hash SHA-256 de una cadena en Java. Al mirar su documentación, parece que no puedo encontrar ningún buen ejemplo de lo que quiero hacer. ¿Alguien aquí puede ayudarme?
java
bouncycastle
sha256
jce
knpwrs
fuente
fuente
digest
se restablece el estado interno; así que cuando lo vuelves a llamar sin actualizar antes, obtienes el hash de la cadena vacía.digest
a String de nuevo?Esto ya está implementado en las bibliotecas en tiempo de ejecución.
En un entorno JEE6 + también se podría utilizar JAXB DataTypeConverter :
fuente
No necesita necesariamente la biblioteca BouncyCastle. El siguiente código muestra cómo hacerlo usando la función Integer.toHexString
Un agradecimiento especial al usuario1452273 de esta publicación: ¿Cómo hacer hash en alguna cadena con sha256 en Java?
¡Sigan con el buen trabajo!
fuente
Cuando use códigos hash con cualquier proveedor jce, primero intente obtener una instancia del algoritmo, luego actualícelo con los datos que desea aplicar con el hash y, cuando haya terminado, llame a digest para obtener el valor hash.
puede utilizar el resumen para obtener una versión codificada en base64 o hexadecimal según sus necesidades
fuente
digest()
la matriz de bytes de entrada, omitiendoupdate()
?String.getBytes()
sin especificar una codificación. Actualmente, este código puede dar diferentes resultados en diferentes plataformas, lo que es un comportamiento roto para un hash bien definido.Java 8: Base64 disponible:
fuente
Supongo que está utilizando una versión de Java relativamente antigua sin SHA-256. Por lo tanto, debe agregar el proveedor de BouncyCastle a los 'Proveedores de seguridad' ya proporcionados en su versión de Java.
fuente
fuente
return Hex.encodeHexString(digest)
en su lugar.Usando Java 8
fuente
Esto funcionará con el siguiente paquete "org.bouncycastle.util.encoders.Hex"
Está en un frasco de castillo hinchable.
fuente