//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