MD5-Hash aus einer Zeichenkette berechnen in C#
-
Verwendung des
MD5
-Algorithmus inC#
-
Verwendung der Bibliothek
System.Security.Cryptography
zur Berechnung des MD5-Hash aus einem C#-String
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 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