jueves, 5 de abril de 2012

Unificando los métodos de hash MD5 y SHA256 en C#

Si analizamos las clases MD5CryptoServiceProvider y SHA256CryptoServiceProvider vemos que estas heredan de MD5 y SHA256 respectivamente, pero tanto la clase MD5 como SHA265 heredan de la clase HashAlgorithm. Con esto nos sería bastante fácil unificar nuestras rutinas de encriptación de la siguiente manera
public string Encrypt(string input, HashAlgorithm hashAlgorithm)
{
  byte[] inputBytes = Encoding.UTF8.GetBytes(input);
  byte[] hashedBytes = hashAlgorithm.ComputeHash(inputBytes);

  StringBuilder output = new StringBuilder();

  for (int i = 0; i < hashedBytes.Length; i++)
    output.Append(hashedBytes[i].ToString("x2").ToLower());

return output.ToString();
}

public string MD5Encrypt(string input)
{
  return Encrypt(input, new MD5CryptoServiceProvider());
}

public string SHA256Encrypt(string input)
{
  return Encrypt(input, new SHA256CryptoServiceProvider());
}
No debemos olvidarnos el importar el espacio de nombres System.Security.Cryptography.
using System.Security.Cryptography;
Happy coding!

No hay comentarios:

Publicar un comentario