The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

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());
        }

    }

}

3 Respuestas a “Código Java – Función de Encriptación mediante MD5

  1. darth_suicune febrero 11, 2014 en 4:25 pm

    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.

  2. demente noviembre 14, 2013 en 8:43 pm

    y como se desencripta la cadena??

  3. Anónimo febrero 24, 2012 en 3:03 pm

    muy bien el codigo puedes hacerr uno que desencripte

No te quedes callado. Pregunta, Comenta, Comparte, Sígueme, Suscríbete, Déjame tu opinión... Soy Beastieux Zeroo...

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: