miércoles, 28 de marzo de 2012

Como obtener el hash MD5 en C#

Según la wikipedia MD5 (abreviatura de Message-Digest Algorithm 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado. Su uso es muy variado y lo podemos encontrar en:
  • Los resúmenes MD5 se utilizan extensamente en el mundo del software para proporcionar la seguridad de que un archivo descargado de Internet no se ha alterado. Comparando una suma MD5 publicada con la suma de comprobación del archivo descargado, un usuario puede tener la confianza suficiente de que el archivo es igual que el publicado por los desarrolladores.
  • En sistemas UNIX y GNU/Linux se utiliza el algoritmo MD5 para calcular el hash de las claves de los usuarios. En el disco se guarda el resultado del MD5 de la clave que se introduce al dar de alta un usuario, y cuando éste quiere entrar en el sistema se compara el hash MD5 de la clave introducida con el hash que hay guardado en el disco duro. Si coinciden, es la misma clave y el usuario será autenticado.
  • El MD5 también se puede usar para comprobar que los correos electrónicos no han sido alterados usando claves públicas y privadas.
Pues bien, como no podía ser de otra manera, .NET nos ofrece la posibilidad de obtener el valor MD5 de una manera muy sencilla. Tan sólo debemos usar el siguiente código

public static string MD5Encrypt(string value)
{
  MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
 
  byte[] data = System.Text.Encoding.ASCII.GetBytes(value);
  data = provider.ComputeHash(data);
 
  string md5 = string.Empty;
 
  for (int i = 0; i < data.Length; i++)
    md5 += data[i].ToString("x2").ToLower();
 
  return md5;
}

También hay que tener en cuenta que debemos importar el espacio de nombres System.Security.Cryptography.
using System.Security.Cryptography;

Algunos ejemplos
MD5('') = d41d8cd98f00b204e9800998ecf8427e
MD5('MD5') = 7f138a09169b250e9dcb378140907378
Happy coding!

No hay comentarios:

Publicar un comentario