Hier noch eine alternative Implementierung als String-Extension:
/// <summary>Gibt einen MD5 Hash als String zurück</summary> /// <param name="textToHash">string der Gehasht werden soll.</param> /// <returns>Hash als string.</returns> /// <exampel> /// string md5 = "abs".GetMD5Hash(); /// </exampel> [DebuggerStepThrough] public static string GetMD5Hash(this string textToHash) { //----------------------------------------------------------------------- // Prüfen ob Daten übergeben wurden. //----------------------------------------------------------------------- if (string.IsNullOrEmpty(textToHash)) { 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[] byteTextToHash = Encoding.Default.GetBytes(textToHash); byte[] result = md5.ComputeHash(byteTextToHash);
Ist es Sinnvoll "Encoding.ASCII" zu verwenden? Was wenn dein Programm als UTF-8 übersetzt wird und solche Zeichenfolgen verarbeiten soll? "Encoding.Default" find ich besser.