C# MD5 and SHA encryption wrapper class

This simple class is a simple utility one for MD5 (128bit) or SHA-2 (256bit,384bit and 512bit) hash encryption.

It outputs the string using 2 byte hex values, e.g. AB12FE. It doesn't include SHA-1 but that's trivial to add.

public class HashEncryption
{
    /// <summary>
    /// Encrypts a string using the MD5 hash encryption algorithm.
    /// Message Digest is 128-bit and is commonly used to verify data, by checking
    /// the 'MD5 checksum' of the data. Information on MD5 can be found at:
    /// 
    /// http://www.faqs.org/rfcs/rfc1321.html
    /// </summary>
    /// <param name="Data">A string containing the data to encrypt.</param>
    /// <returns>A string containing the string, encrypted with the MD5 hash.</returns>
    public static string MD5Hash(string Data)
    {
    	MD5 md5 = new MD5CryptoServiceProvider();
    	byte[] hash = md5.ComputeHash( Encoding.ASCII.GetBytes(Data) );

    	StringBuilder stringBuilder = new StringBuilder();
    	foreach( byte b in hash ) 
    	{
    		stringBuilder.AppendFormat("{0:x2}", b);
    	}
    	return stringBuilder.ToString();
    }

    /// <summary>
    /// Encrypts a string using the SHA256 (Secure Hash Algorithm) algorithm.
    /// Details: http://www.itl.nist.gov/fipspubs/fip180-1.htm
    /// This works in the same manner as MD5, providing however 256bit encryption.
    /// </summary>
    /// <param name="Data">A string containing the data to encrypt.</param>
    /// <returns>A string containing the string, encrypted with the SHA256 algorithm.</returns>
    public static string SHA256Hash(string Data)
    {
    	SHA256 sha = new SHA256Managed();
    	byte[] hash = sha.ComputeHash( Encoding.ASCII.GetBytes(Data) );

    	StringBuilder stringBuilder = new StringBuilder();
    	foreach( byte b in hash ) 
    	{
    		stringBuilder.AppendFormat("{0:x2}", b);
    	}
    	return stringBuilder.ToString();
    }

    /// <summary>
    /// Encrypts a string using the SHA384(Secure Hash Algorithm) algorithm.
    /// This works in the same manner as MD5, providing 384bit encryption.
    /// </summary>
    /// <param name="Data">A string containing the data to encrypt.</param>
    /// <returns>A string containing the string, encrypted with the SHA384 algorithm.</returns>
    public static string SHA384Hash(string Data)
    {
    	SHA384 sha = new SHA384Managed();
    	byte[] hash = sha.ComputeHash( Encoding.ASCII.GetBytes(Data) );

    	StringBuilder stringBuilder = new StringBuilder();
    	foreach( byte b in hash ) 
    	{
    		stringBuilder.AppendFormat("{0:x2}", b);
    	}
    	return stringBuilder.ToString();
    }


    /// <summary>
    /// Encrypts a string using the SHA512 (Secure Hash Algorithm) algorithm.
    /// This works in the same manner as MD5, providing 512bit encryption.
    /// </summary>
    /// <param name="Data">A string containing the data to encrypt.</param>
    /// <returns>A string containing the string, encrypted with the SHA512 algorithm.</returns>
    public static string SHA512Hash(string Data)
    {
    	SHA512 sha = new SHA512Managed();
    	byte[] hash = sha.ComputeHash( Encoding.ASCII.GetBytes(Data) );

    	StringBuilder stringBuilder = new StringBuilder();
    	foreach( byte b in hash ) 
    	{
    		stringBuilder.AppendFormat("{0:x2}", b);
    	}
    	return stringBuilder.ToString();
    }
}
Last updated on 03 March 2009

Comments

blog comments powered by Disqus