C# MD5 und SHA Hash erzeugen 2


Mit der folgenden statischen Klasse lässt sich aus einem String ein MD5, SHA1, SHA256, SHA384 und SHA512 Hash erzeugen.

using System;
using System.Security.Cryptography;
using System.Text;

namespace Percula.Web.Tools
{
    public static class Functions
    {
        /// <summary>
        /// Gibt einen MD5 Hash als String zurück
        /// </summary>
        /// <param name="text"/>string der Gehasht werden soll.
        /// <returns>Hash als string.</returns>
        public static string GetMD5Hash(string text)
        {
            //Prüfen ob Daten übergeben wurden.
            if ((text == null) || (text.Length == 0))
            {
                return string.Empty;
            }

            //MD5 Hash aus dem String berechnen. Dazu muss der string in ein Byte[]
            //zerlegt werden. Danach muss das Resultat wieder zurück in ein string.
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] textToHash = Encoding.Default.GetBytes(text);
            byte[] result = md5.ComputeHash(textToHash);
            string hashString = string.Empty;
            foreach (byte b in result)
            {
                hashString += String.Format("{0:x2}", b);
            }

            return hashString;
        }
        /// <summary>
        /// Gets the SHA1 hash.
        /// </summary>
        /// <param name="text"/>The text.
        /// <returns></returns>
        public static string GetSha1Hash(string text)
        {
            //Prüfen ob Daten übergeben wurden.
            if ((text == null) || (text.Length == 0))
            {
                return string.Empty;
            }
            byte[] bytes = Encoding.Unicode.GetBytes(text);
            SHA1Managed hashstring = new SHA1Managed();
            byte[] hash = hashstring.ComputeHash(bytes);
            string hashString = string.Empty;
            foreach (byte x in hash)
            {
                hashString += String.Format("{0:x2}", x);
            }
            return hashString;
        }
        /// <summary>
        /// Gets the SHA256 hash.
        /// </summary>
        /// <param name="text"/>The text.
        /// <returns></returns>
        public static string GetSha256Hash(string text)
        {
            //Prüfen ob Daten übergeben wurden.
            if ((text == null) || (text.Length == 0))
            {
                return string.Empty;
            }
            byte[] bytes = Encoding.Unicode.GetBytes(text);
            SHA256Managed hashstring = new SHA256Managed();
            byte[] hash = hashstring.ComputeHash(bytes);
            string hashString = string.Empty;
            foreach (byte x in hash)
            {
                hashString += String.Format("{0:x2}", x);
            }
            return hashString;
        }

        /// <summary>
        /// Gets the SHA384 hash.
        /// </summary>
        /// <param name="text"/>The text.
        /// <returns></returns>
        public static string GetSha384Hash(string text)
        {
            //Prüfen ob Daten übergeben wurden.
            if ((text == null) || (text.Length == 0))
            {
                return string.Empty;
            }
            byte[] bytes = Encoding.Unicode.GetBytes(text);
            SHA384Managed hashstring = new SHA384Managed();
            byte[] hash = hashstring.ComputeHash(bytes);
            string hashString = string.Empty;
            foreach (byte x in hash)
            {
                hashString += String.Format("{0:x2}", x);
            }
            return hashString;
        }
        /// <summary>
        /// Gets the SHA384 hash.
        /// </summary>
        /// <param name="text"/>The text.
        /// <returns></returns>
        public static string GetSha512Hash(string text)
        {
            //Prüfen ob Daten übergeben wurden.
            if ((text == null) || (text.Length == 0))
            {
                return string.Empty;
            }
            byte[] bytes = Encoding.Unicode.GetBytes(text);
            SHA512Managed hashstring = new SHA512Managed();
            byte[] hash = hashstring.ComputeHash(bytes);
            string hashString = string.Empty;
            foreach (byte x in hash)
            {
                hashString += String.Format("{0:x2}", x);
            }
            return hashString;
        }
    }
}

Siehe auch: Create Online MD5 und SHA Hashes


Schreibe einen Kommentar

2 Gedanken zu “C# MD5 und SHA Hash erzeugen