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

Anuncios

4 comentarios to “Encriptación MD5 – JAVA”

  1. Pedro Says:

    puedes dejar un ejemplo de como desencriptarlo
    Gracias

    • qmarqeva Says:

      @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 Says:

    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 Says:

      @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.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: