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