using System; using System.Security.Cryptography; using System.Text; namespace uMVVM.Sources.Infrastructure { public class MD5Helper { public static string GetMd5Hash(MD5 md5Hash, string input) { // Convert the input string to a byte array and compute the hash. var data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); // Create a new Stringbuilder to collect the bytes // and create a string. var sBuilder = new StringBuilder(); // Loop through each byte of the hashed data // and format each one as a hexadecimal string. for (var i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } // Return the hexadecimal string. return sBuilder.ToString(); } // Verify a hash against a string. public static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash) { // Hash the input. var hashOfInput = GetMd5Hash(md5Hash, input); // Create a StringComparer an compare the hashes. var comparer = StringComparer.OrdinalIgnoreCase; if (0 == comparer.Compare(hashOfInput, hash)) { return true; } return false; } } }