Código Java – Función de Encriptación mediante MD5


Este es el Ejemplo #09 del Topic: Programación Gráfica en Java.

El tema de hoy tampoco trata específicamente de programación gráfica, pero en pleno desarrollo de un proyecto podría necesitarlo. Se trata de un mecanismo de encriptación no reversible aunque a lo largo de los años han sucedido una serie de ataques para pasar la barrera de seguridad que proponía. A pesar de que es un método de cifrado no reversible es muy sensible al ataque por colisiones, sin embargo puede ser usado aún por ejemplo para comprobar la integridad de un archivo descargado de esa manera evitamos obtener archivos dañados o corruptos alterados maliciosamente mediante su cheksum o como paso previo a la autentificación de un usuario al coincidir el hash.

Observemos la codificación en java de la función getMD5 que retorna un String hash:

...
    public String getMD5(String cadena) throws Exception {

        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] b = md.digest(cadena.getBytes());

        int size = b.length;
        StringBuilder h = new StringBuilder(size);
        for (int i = 0; i < size; i++) {

            int u = b[i] & 255;

            if (u < 16)
            {
                h.append("0").append(Integer.toHexString(u));
            }
            else
            {
                h.append(Integer.toHexString(u));
            }
        }
        return h.toString();
    }
...

Código de Ejemplo:

package beastieux.gui;

import java.security.MessageDigest;
import javax.swing.JOptionPane;

/**
 *
 * @author beastieux
 */
public class Ejm09_EncriptacionMD5 {

    public String getMD5(String cadena) throws Exception {

        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] b = md.digest(cadena.getBytes());

        int size = b.length;
        StringBuilder h = new StringBuilder(size);
        for (int i = 0; i < size; i++) {

            int u = b[i] & 255;

            if (u < 16)
            {
                h.append("0").append(Integer.toHexString(u));
            }
            else
            {
                h.append(Integer.toHexString(u));
            }
        }
        return h.toString();
    }

    public static void main(String args[]) {
        Ejm09_EncriptacionMD5 obj = new Ejm09_EncriptacionMD5();

        try {
            JOptionPane.showMessageDialog(null, obj.getMD5("palabrasecreta"));
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }

    }

}
Anuncios

4 comentarios sobre “Código Java – Función de Encriptación mediante MD5

  1. No se puede desencriptar porque MD5 no es un sistema de encriptacion, pese a que el articulo lo llame asi. Es un algoritmo de hasheado, solo funciona en una direccion.

Deja tu comentario

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