45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
} |