MD5-Hash aus einer Zeichenkette berechnen in C#

Harshit Jindal 12 Oktober 2023
  1. Verwendung des MD5-Algorithmus in C#
  2. Verwendung der Bibliothek System.Security.Cryptography zur Berechnung des MD5-Hash aus einem C#-String
MD5-Hash aus einer Zeichenkette berechnen in C#

Die Hashing-Algorithmen sind mathematische Algorithmen, die verwendet werden, um beliebige Eingabedaten auf einen Hash mit fester Größe abzubilden. Sie werden für verschiedene Zwecke verwendet, z. B. zum Speichern von Daten in Datenstrukturen wie hash maps, Passwortüberprüfung, Nachrichtenverarbeitung und Kryptowährungssicherheit.

Der MD5 gehört zur Message-Digesting-Klasse der Hashing-Algorithmen. Rivest entwickelte MD5 und andere Algorithmen wie MD2, MD4 usw.

Der Algorithmus wurde ursprünglich entwickelt, um digitale Signaturen zu authentifizieren. Später wurden jedoch viele Schwachstellen entdeckt, die zu seiner Ablehnung führten.

Dennoch wird es immer noch zur Überprüfung der Datenintegrität verwendet und bildet eine Grundlage für das Verständnis fortschrittlicher Algorithmen. Der MD5-Algorithmus nimmt, wie alle Nachrichtenverarbeitungsalgorithmen, eine Nachricht unbekannter Länge als Eingabe und wandelt sie in einen Hash mit fester Größe um.

Eine geringfügige Änderung der Eingabezeichenfolge führt zu einem völlig anderen Hash. In diesem Artikel erfahren Sie, wie Sie den MD5-Hash mit C# berechnen.

Verwendung des MD5-Algorithmus in C#

Der MD5-Algorithmus besteht aus den folgenden vier Hauptschritten:

Fügen Sie zuerst Füllbits an.

In diesem Schritt fügen wir Füllbits hinzu, sodass die Anzahl der Gesamtbits 64 kleiner als das nächste Vielfache von 512 wird. Dies geschieht, damit der Algorithmus Daten in der Größe von 512 Bits verarbeiten kann, und Schritt 2, die in 64 Bits ausgedrückte Länge der Zeichenfolge wird addiert, um ein gerades Vielfaches von 512 zu erhalten.

Zweitens, hängen Sie Längenbits an.

Berechnen Sie die Länge des Strings in 64 Bits. Hängen Sie sie an die in Schritt 1 gebildete Ausgabe an.

Drittens, MD-Puffer initialisieren.

Wir initialisieren 4 Nachrichtenverarbeitungspuffer von 32 Bits mit den Namen A, B, C und D. Sie sind wie folgt:

A = 01 23 45 67
B = 89 ab cd ef
C = fe dc ba 98
D = 76 54 32 10

Viertens ist die Verarbeitung einzelner 512-Bit-Blöcke.

Die ganzen Bits werden in Blöcke der Grösse 512 zerlegt. Jeder gebildete Block ist in 16 Unterblöcke von 32 Bits unterteilt. Alle gebildeten 16 Blöcke werden durch eine Reihe von 4 Operationen mit den Puffern A, B, C und D geleitet, um den endgültigen Hash zu ergeben.

Verwendung der Bibliothek System.Security.Cryptography zur Berechnung des MD5-Hash aus einem C#-String

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

public class Test {
  public static string ComputeMd5Hash(string message) {
    using (MD5 md5 = MD5.Create()) {
      byte[] input = Encoding.ASCII.GetBytes(message);
      byte[] hash = md5.ComputeHash(input);

      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < hash.Length; i++) {
        sb.Append(hash[i].ToString("X2"));
      }
      return sb.ToString();
    }
  }
  public static void Main() {
    string message = "Welcome to DelfStack";
    Console.WriteLine(ComputeMd5Hash(message));
  }
}

Ausgabe:

53C62733BB54F2B720A32490E6C447FF

Im obigen Programm erstellen wir ein Objekt der in C# vorhandenen Klasse MD5, das eine vorgefertigte Implementierung des md5-Algorithmus durch die Methode ComputeHash() bereitstellt.

Wir wandeln unseren Message-String passend zur Funktionssignatur der Methode ComputeHash() in einen byte stream um, der das Ergebnis dann in Form eines Bytestreams zurückliefert. Wir verwenden dann die String-Builder-Klasse, um den Byte-Stream in einen gültigen C#-String umzuwandeln.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn