Encriptación MD5 – JAVA

Más de una vez se suele necesitar cifrar información sensible como contraseñas o códigos de aplicación. En esta ocasión realizaré la encriptación basada en MD5. Pero de forma recursiva ;-) De tal forma que tendremos la siguiente fórmula de encriptación:

MD5(MD5(MD5(PASSWORD) + MD5(SEMILLA)))

La que utiliza una semilla para garantizar más aún nuestros datos. Y como era de suponer JAVA posee una clase que nos permite aplicar MD5 a una cadena, la misma que es MessageDigest. Para ello:

Especificamos la Instancia del Algoritmo (también podemos hacerlo con SHA pero no es el caso)

MessageDigest md = MessageDigest.getInstance(“MD5″);

Indicamos los caracteres contenidos en la clave y su longitud.

md.update(clave.getBytes(“UTF-8″), 0, clave.length());

Debido a que la clase MessageDigest devuelve el valor como un vector de bytes, deberemos realizar el siguiente proceso para transformar bytes–>BigInteger–>String

byte[] bt = md.digest();

BigInteger bi = new BigInteger(1, bt);

String md5 = bi.toString(16);  //16 por hexadecimal.

Con este principio lo que se debe hacer es realizar las llamadas a un método en el orden correcto para conseguir nuestro objetivo del principio. Aquí pueden encontrar la implementación en un proyecto de NetBeans con una interfaz gráfica.
Saludos.

qmarqeva

Advertisement

4 comentarios para “Encriptación MD5 – JAVA”

  1. Pedro Dice:

    puedes dejar un ejemplo de como desencriptarlo
    Gracias

    • qmarqeva Dice:

      @Pedro el uso de MD5 determina que el texto encriptado no se puede regresar o desencriptar (por esto es utilizado para almacenar contraseñas). :-)

  2. manuelpastrana Dice:

    qmarqeva si se puede descifrar lo que hay que hacer es modficar el codigo para que por ejemplo por fuerza bruta encuentre una palabra que al generar el MD5 sea igual a la que estamos tratando de decifrar. Eso lo haces dentro de un bucle de programación.

    • qmarqeva Dice:

      @manuelpastrana En teoría el descifrar un código MD5 por fuerza bruta funcionaría siempre y cuando la cantidad de caracteres que posea el texto encriptado sean mínimos (2 o 3) y sean solo letras o números, para minimizar el tiempo de búsqueda… de lo contrario el tiempo para descifrar por ejemplo un password de longitud 6 alfanumérico (cualquier password decente lo es) no creo que sea nada corto ;-)
      Saludos.


Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.