Generando un hash MD5 con ASP.NET y C# de forma sencilla y simple.

El MD5 es un algoritmo criptográfico de 128 bits. Fue desarrollado por Ronald Rivest (profesor del MIT) en el año 91 como sucesor del MD4 y pesar de que en el año 96 fue anunciada una colisión de hash planteándose por lo tanto dudas sobre su futuro, a día de hoy es muy usado.

Por medio del MD5, vamos a obtener un hash sobre un conjunto de datos. Un hash viene a ser un conjunto de datos obtenido en base a otros.

Este tipo de algoritmos, se usa para certificar que una secuencia de datos no ha sido alterada, ya que si se modifica el valor del hash, implica que esa información ha cambiado.

El resultado obtenido por medio de un MD5 es una cadena hexadecimal de 32 dígitos.

¿Cómo podemos obtener un hash mediante el MD5?

Pues vamos a verlo, la verdad es que generar un hash MD5 con C# es sencillo dado que el Framework (como siempre) nos proporcionan unas clases para realizar esto.

Lo único que tenemos que hacer es crear una instancia de la clase MD5 y pasarle un array de bytes al método ComputeHash.

El código necesario es el siguiente:

public static string GetMD5(string str)
{
MD5 md5 = MD5CryptoServiceProvider.Create();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] stream = null;
StringBuilder sb = new StringBuilder();
stream = md5.ComputeHash(encoding.GetBytes(str));
for (int i = 0; i < stream.Length; i++) sb.AppendFormat("{0:x2}", stream[i]);
return sb.ToString();
}

Como veis, es muy sencillo y creo que la única aclaración necesaria es la de la conversión del string. Pues bien, dado que la salida es una cadena hexadecimal de 32 dígitos, en el momento que estamos haciendo la conversión, tenemos que indicarlo, por eso, le pasamos como formato esperado el :x2.

Como siempre, mi consejo es que os bajéis el código ya que así lo podéis testear con una prueba unitaria y ver cómo funciona en detalle.

Otros algoritmos criptográficos en A deshoras

Enlaces relacionados

Descargas (Download)

15 pensamientos en “Generando un hash MD5 con ASP.NET y C# de forma sencilla y simple.

  1. Generando un hash sha1 con ASP.NET y C# de forma sencilla y simple. « a deshoras

  2. Muchas gracias, esta muy bien, pero lo que falta es algo muy comun en muchos ejemplos de código por Internet. Indicar el namespace donde esta la clase que se esta usando.

  3. Excelente aporte el que haz hecho, el otro namespace que falta es el de:

    System.Text;

    mmmm por cierto el link para bajar el archivo no funciona.

    • Hola Teo,

      gracias por leer el post y gracias por el aporte.

      Respecto al tema del link lo acabo de probar y funciona ok, si quieres intenta descargalo otra vez y si no puedes me cuentas y vemos a ver como te lo paso ok????

      gracias otra vez y saludos.

  4. Hola, funciona perfectamente.

    Mi problema es que almaceno en sql la password cifrada, y el administrador tiene la opción de modificar las claves, por lo que necesitaría un método para obtener la contraseña legible introduciendo la cifrada. Es decir que si la password es «usuario» y su MD5 es «f8032d5cae3de20fcec887f395ec9a6a», una función que introduciendo «f8032d5cae3de20fcec887f395ec9a6a» me devuelva «usuario».

    Muchas gracias, un saludo

  5. hola buen día, excelente blog, ahora bien, no está publicada la respuesta a ceja septiembre 7, 2009 en 11:25 am, en la cual dice «Hola, funciona perfectamente.

    Mi problema es que almaceno en sql la password cifrada, y el administrador tiene la opción de modificar las claves, por lo que necesitaría un método para obtener la contraseña legible introduciendo la cifrada. Es decir que si la password es “usuario” y su MD5 es “f8032d5cae3de20fcec887f395ec9a6a”, una función que introduciendo “f8032d5cae3de20fcec887f395ec9a6a” me devuelva “usuario”.

    Muchas gracias, un saludo»

    • Hola Cholopito.

      Disculpa pero había traspapelado tu comentario. Rodrigo os responde a los dos.

      Un saludo y gracias tanto por comentar como por leer este blog.

Deja un comentario