Social

viernes, 3 de mayo de 2013

Java: Generar hash SHA y encriptar cadenas

Muchas veces es necesario cifrar, encriptar o generar hashes de passwords u otros textos delicados. Para realzar esto en Java se utiliza la clase MessageDigest la cual nos permite cargar una algoritmo y encriptarlo en forma de bytes.

La clase MessageDigest permite el uso de los algoritmos MD2, MD5, SHA-1, SHA-256, SHA-348, SHA-512. 

En el siguiente código se puede observar un ejemplo de MD5, SHA-1 y SHA-512:


Como se puede observar simplemente obtenemos la instancia del algoritmo que se desea, le agregamos la cadena en forma de bytes con el método update y lo trasformamos. Para poder visualizarlo en forma Hexadecimal se utiliza la clase Hex que se obtiene de la librería commons-codec de Apache, la cual se puede descargar en el siguiente link o directamente de la pagina de Apache.

Al final se obtiene lo siguiente:

793d5ecd344bd91c808917d8821ae74b4c84550964b67906bdeb6c7dc0146bef90b5a2b326ac31049b0e3930a0d697b760c13236596da2d142e6947a1e3386b5
8e8725edeaa090c62110e9c7b23a243873d61b36
1462a2da3e9d67e5824c71b2ac91bc66

6 comentarios :

  1. hay alguna forma de revertirlo sabiendo la string?

    ResponderEliminar
    Respuestas
    1. Lo que se produce con estos algoritmos de cifrado no se pueden revertir. Existen métodos para encontrar la clave original como la tabla arco iris pero estos simplemente son una tabla de claves generadas para comparar.

      Eliminar
  2. Hola, como podria pasar el hash de salida a su representacion en binario?

    ResponderEliminar
  3. Como pasarlo auna variable string el resultado

    ResponderEliminar
  4. Hola, es siempre necesario encapsular el proceso en un try catch?

    ResponderEliminar
    Respuestas
    1. No siempre. Esto es para poder manejar el error en caso algo salga mal. Siempre puedes dejar que el código solo falle.

      Eliminar