//Usings.
using System;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// Método para calcular el hash MD5 de una cadena de texto.
/// </summary>
/// <param name="text">La cadena de texto de entrada.</param>
/// <returns>El hash MD5 calculado como una cadena hexadecimal.</returns>
public static string EncodeMD5Hash(string text)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(text);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
builder.Append(hashBytes[i].ToString("x2"));
}
return builder.ToString();
}
}
/// <summary>
/// Verifica si una cadena de texto coincide con un hash MD5 dado.
/// </summary>
/// <param name="text">La cadena de texto de entrada.</param>
/// <param name="hash">El hash MD5 a verificar.</param>
/// <returns>Booleano para indicar si el hash coincide con el hash MD5 calculado de la cadena de texto (true) true, o no (false).</returns>
public static bool VerifyMD5Hash(string text, string hash)
{
string inputHash = EncodeMD5Hash(text);
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
return comparer.Compare(inputHash, hash) == 0;
}
/// <summary>
/// Codifica una cadena de texto en un hash SHA-256.
/// </summary>
/// <param name="text">Cadena de texto a codificar.</param>
/// <returns>El hash SHA-256 en formato hexadecimal.</returns>
public static string EncodeSHA256(string text)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(text);
byte[] hashBytes = sha256.ComputeHash(inputBytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
builder.Append(hashBytes[i].ToString("x2"));
}
return builder.ToString();
}
}
/// <summary>
/// Verifica si una cadena de texto coincide con un hash SHA-256 dado.
/// </summary>
/// <param name="text">La cadena de texto de entrada.</param>
/// <param name="hash">El hash SHA-256 a verificar.</param>
/// <returns>Booleano para indicar si el hash coincide con el hash SHA-256 calculado de la cadena de texto (true) true, o no (false).</returns>
public static bool VerifySha256Hash(string text, string hash)
{
string inputHash = EncodeSHA256(text);
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
return comparer.Compare(inputHash, hash) == 0;
}
C#: Calcular y verificar Hash MD5 y SHA-256
Tiempo de lectura: 2 minutos