miércoles, 11 de enero de 2012

Ejemplo MD5 en Java

MD5 es uno algoritmo de reducción criptográfico.

MD5 se utiliza para comprobar que lo que descargamos de internet es el archivo original y no un troyano. También se utiliza para comprobar claves guardando el valor hash en disco y comparando con éste. Aplicando MD5 obtenemos un valor hash de 32 dígitos hexadecimales. Este valor se envía junto con el archivo. El usuario compara el valor hash del archivo obtenido con el valor hash que le han proporcionado y si no son iguales estamos seguros que el archivo ha sufrido un cambio y no es el original.
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class MD5 {
    public static String getMD5(String entrada) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(entrada.getBytes());
            BigInteger number = new BigInteger(1, messageDigest);
            String hashtext = number.toString(16);
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext;
        }
        catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
 
    public static void main(String[] args) throws NoSuchAlgorithmException {
        System.out.println(getMD5("Nuestra Clave"));
    }
}

Podemos cambiar el algoritmo MD5 por MD2, MD4, SHA...


No podemos desencriptar un valor hash porque es un acción de una única dirección. Lo que debemos de hacer es comparar el valor hash obtenido con otro valor hash previamente obtenido y guardado.

Lo más parecido a desencriptar sería probar todas las posibles entradas y aplicarles el algoritmo hasta coincidir con el guardado.

No hay comentarios:

Publicar un comentario