Adding for archival purposes…
<span style="color: blue">using </span>System;
<span style="color: blue">using </span>System.Collections.Generic;
<span style="color: blue">using </span>System.Linq;
<span style="color: blue">using </span>System.Web;
<span style="color: blue">using </span>System.Security.Cryptography;
<span style="color: blue">namespace </span>Classes
{
<span style="color: blue">public class </span><span style="color: #2b91af">Hash
</span>{
<span style="color: blue">public </span>Hash()
{ }
<span style="color: blue">#region </span>Hash Choices
<span style="color: gray">/// <summary></span><span style="color: green">The wanted hash function.</span><span style="color: gray"></summary>
</span><span style="color: blue">public enum </span><span style="color: #2b91af">HashType </span>: <span style="color: blue">int
</span>{
<span style="color: gray">/// <summary></span><span style="color: green">MD5 Hashing</span><span style="color: gray"></summary>
</span>MD5,
<span style="color: gray">/// <summary></span><span style="color: green">SHA1 Hashing</span><span style="color: gray"></summary>
</span>SHA1,
<span style="color: gray">/// <summary></span><span style="color: green">SHA256 Hashing</span><span style="color: gray"></summary>
</span>SHA256,
<span style="color: gray">/// <summary></span><span style="color: green">SHA384 Hashing</span><span style="color: gray"></summary>
</span>SHA384,
<span style="color: gray">/// <summary></span><span style="color: green">SHA512 Hashing</span><span style="color: gray"></summary>
</span>SHA512
} <span style="color: green">/* HashType */
</span><span style="color: blue">#endregion
#region </span>Public Methods
<span style="color: gray">/// <summary></span><span style="color: green">Generates the hash of a text.</span><span style="color: gray"></summary>
/// <param name="strPlain"></span><span style="color: green">The text of which to generate a hash of.</span><span style="color: gray"></param>
/// <param name="hshType"></span><span style="color: green">The hash function to use.</span><span style="color: gray"></param>
/// <returns></span><span style="color: green">The hash as a hexadecimal string.</span><span style="color: gray"></returns>
</span><span style="color: blue">public static string </span>GetHash(<span style="color: blue">string </span>strPlain, <span style="color: #2b91af">HashType </span>hshType)
{
<span style="color: blue">string </span>strRet;
<span style="color: blue">switch </span>(hshType)
{
<span style="color: blue">case </span><span style="color: #2b91af">HashType</span>.MD5:
strRet = GetMD5(strPlain);
<span style="color: blue">break</span>;
<span style="color: blue">case </span><span style="color: #2b91af">HashType</span>.SHA1:
strRet = GetSHA1(strPlain);
<span style="color: blue">break</span>;
<span style="color: blue">case </span><span style="color: #2b91af">HashType</span>.SHA256:
strRet = GetSHA256(strPlain);
<span style="color: blue">break</span>;
<span style="color: blue">case </span><span style="color: #2b91af">HashType</span>.SHA384:
strRet = GetSHA384(strPlain);
<span style="color: blue">break</span>;
<span style="color: blue">case </span><span style="color: #2b91af">HashType</span>.SHA512:
strRet = GetSHA512(strPlain);
<span style="color: blue">break</span>;
<span style="color: blue">default</span>:
strRet = <span style="color: #a31515">"Invalid HashType"</span>;
<span style="color: blue">break</span>;
}
<span style="color: blue">return </span>strRet;
} <span style="color: green">/* GetHash */
</span><span style="color: gray">/// <summary></span><span style="color: green">Checks a text with a hash.</span><span style="color: gray"></summary>
/// <param name="strOriginal"></span><span style="color: green">The text to compare the hash against.</span><span style="color: gray"></param>
/// <param name="strHash"></span><span style="color: green">The hash to compare against.</span><span style="color: gray"></param>
/// <param name="hshType"></span><span style="color: green">The type of hash.</span><span style="color: gray"></param>
/// <returns></span><span style="color: green">True if the hash validates, false otherwise.</span><span style="color: gray"></returns>
</span><span style="color: blue">public static bool </span>CheckHash(<span style="color: blue">string </span>strOriginal, <span style="color: blue">string </span>strHash, <span style="color: #2b91af">HashType </span>hshType)
{
<span style="color: blue">string </span>strOrigHash = GetHash(strOriginal, hshType);
<span style="color: blue">return </span>(strOrigHash == strHash);
} <span style="color: green">/* CheckHash */
</span><span style="color: blue">#endregion
#region </span>Hashers
<span style="color: blue">private static string </span>GetMD5(<span style="color: blue">string </span>strPlain)
{
<span style="color: #2b91af">UnicodeEncoding </span>UE = <span style="color: blue">new </span><span style="color: #2b91af">UnicodeEncoding</span>();
<span style="color: blue">byte</span>[] HashValue, MessageBytes = UE.GetBytes(strPlain);
<span style="color: #2b91af">MD5 </span>md5 = <span style="color: blue">new </span><span style="color: #2b91af">MD5CryptoServiceProvider</span>();
<span style="color: blue">string </span>strHex = <span style="color: #a31515">""</span>;
HashValue = md5.ComputeHash(MessageBytes);
<span style="color: blue">foreach </span>(<span style="color: blue">byte </span>b <span style="color: blue">in </span>HashValue)
{
strHex += <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">"{0:x2}"</span>, b);
}
<span style="color: blue">return </span>strHex;
} <span style="color: green">/* GetMD5 */
</span><span style="color: blue">private static string </span>GetSHA1(<span style="color: blue">string </span>strPlain)
{
<span style="color: #2b91af">UnicodeEncoding </span>UE = <span style="color: blue">new </span><span style="color: #2b91af">UnicodeEncoding</span>();
<span style="color: blue">byte</span>[] HashValue, MessageBytes = UE.GetBytes(strPlain);
<span style="color: #2b91af">SHA1Managed </span>SHhash = <span style="color: blue">new </span><span style="color: #2b91af">SHA1Managed</span>();
<span style="color: blue">string </span>strHex = <span style="color: #a31515">""</span>;
HashValue = SHhash.ComputeHash(MessageBytes);
<span style="color: blue">foreach </span>(<span style="color: blue">byte </span>b <span style="color: blue">in </span>HashValue)
{
strHex += <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">"{0:x2}"</span>, b);
}
<span style="color: blue">return </span>strHex;
} <span style="color: green">/* GetSHA1 */
</span><span style="color: blue">private static string </span>GetSHA256(<span style="color: blue">string </span>strPlain)
{
<span style="color: #2b91af">UnicodeEncoding </span>UE = <span style="color: blue">new </span><span style="color: #2b91af">UnicodeEncoding</span>();
<span style="color: blue">byte</span>[] HashValue, MessageBytes = UE.GetBytes(strPlain);
<span style="color: #2b91af">SHA256Managed </span>SHhash = <span style="color: blue">new </span><span style="color: #2b91af">SHA256Managed</span>();
<span style="color: blue">string </span>strHex = <span style="color: #a31515">""</span>;
HashValue = SHhash.ComputeHash(MessageBytes);
<span style="color: blue">foreach </span>(<span style="color: blue">byte </span>b <span style="color: blue">in </span>HashValue)
{
strHex += <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">"{0:x2}"</span>, b);
}
<span style="color: blue">return </span>strHex;
} <span style="color: green">/* GetSHA256 */
</span><span style="color: blue">private static string </span>GetSHA384(<span style="color: blue">string </span>strPlain)
{
<span style="color: #2b91af">UnicodeEncoding </span>UE = <span style="color: blue">new </span><span style="color: #2b91af">UnicodeEncoding</span>();
<span style="color: blue">byte</span>[] HashValue, MessageBytes = UE.GetBytes(strPlain);
<span style="color: #2b91af">SHA384Managed </span>SHhash = <span style="color: blue">new </span><span style="color: #2b91af">SHA384Managed</span>();
<span style="color: blue">string </span>strHex = <span style="color: #a31515">""</span>;
HashValue = SHhash.ComputeHash(MessageBytes);
<span style="color: blue">foreach </span>(<span style="color: blue">byte </span>b <span style="color: blue">in </span>HashValue)
{
strHex += <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">"{0:x2}"</span>, b);
}
<span style="color: blue">return </span>strHex;
} <span style="color: green">/* GetSHA384 */
</span><span style="color: blue">private static string </span>GetSHA512(<span style="color: blue">string </span>strPlain)
{
<span style="color: #2b91af">UnicodeEncoding </span>UE = <span style="color: blue">new </span><span style="color: #2b91af">UnicodeEncoding</span>();
<span style="color: blue">byte</span>[] HashValue, MessageBytes = UE.GetBytes(strPlain);
<span style="color: #2b91af">SHA512Managed </span>SHhash = <span style="color: blue">new </span><span style="color: #2b91af">SHA512Managed</span>();
<span style="color: blue">string </span>strHex = <span style="color: #a31515">""</span>;
HashValue = SHhash.ComputeHash(MessageBytes);
<span style="color: blue">foreach </span>(<span style="color: blue">byte </span>b <span style="color: blue">in </span>HashValue)
{
strHex += <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">"{0:x2}"</span>, b);
}
<span style="color: blue">return </span>strHex;
} <span style="color: green">/* GetSHA512 */
</span><span style="color: blue">#endregion
</span>}
}