So erhalten Sie die MD5-Prüfziffer in PowerShell
- Verwendung des MD5-Hashalgorithmus in PowerShell
-
Verwendung der Klasse
[System.Security.Cryptography.MD5]in PowerShell -
Verwendung der Klasse
MD5CryptoServiceProviderin PowerShell - Fazit
Wenn es darum geht, die Integrität und Sicherheit von Daten in PowerShell zu gewährleisten, bleibt der MD5-Hashalgorithmus trotz seiner abnehmenden Relevanz in Sicherheitskontexten ein wertvolles Werkzeug. Obwohl er aufgrund von Schwachstellen nicht für kryptografische Zwecke empfohlen wird, bleibt MD5 nützlich zur Überprüfung von Dateiübertragungen und zur Erkennung von Manipulationen.
Mit den Möglichkeiten von PowerShell erkunden wir verschiedene Methoden zur Berechnung von MD5-Prüfziffern und geben Einblicke in sowohl grundlegende als auch fortgeschrittene Ansätze.
Verwendung des MD5-Hashalgorithmus in PowerShell
Auch wenn MD5 für Sicherheitszwecke nicht empfohlen wird, ist es dennoch eine ausgezeichnete Lösung, um zu überprüfen, ob eine Dateiübertragung manipuliert oder erfolgreich war.
Zuerst erhalten wir den MD5-Fingerabdruck der Datei vor und nach der Übertragung.
Wenn das Ergebnis denselben Wert ergibt, wurde die Dateiübertragung nicht manipuliert. Andernfalls ist sie beschädigt.
Dazu verwenden wir das Cmdlet Get-FileHash. Das Cmdlet Get-FileHash zeigt den Hashwert einer Datei an.
Es verwendet standardmäßig den SHA256-Algorithmus, aber wir können einen zusätzlichen Parameter hinzufügen, um MD5 zu verwenden.
Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
-Algorithm: Gibt den zu verwendenden Hashalgorithmus an. In diesem Fall verwenden wirMD5.-Path: Gibt den Pfad zur Datei an, für die Sie den Hashwert berechnen möchten.
Wir können es auch mit einem Stream anstelle eines Dateipfads verwenden.
Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
-
[-InputStream] <stream>: Gibt den Eingabestream für die Hashberechnung an, der standardmäßig auf die durch-Pathangegebene Datei verweist. -
[[-Algorithm] <algo>]: Gibt den zu verwendenden Hashalgorithmus (z. B.MD5,SHA1) an. -
[Options]: Zusätzliche Einstellungen wie-Path,-LiteralPath,-Forceusw. zur Anpassung und Fehlerbehandlung.
Hier ist ein Beispiel:
Get-FileHash -Path "path\example.txt" -Algorithm MD5
In diesem Code verwenden wir das Cmdlet Get-FileHash, um die MD5-Prüfziffer der Datei unter "C:\Path\To\File.txt" zu berechnen. Das Cmdlet berechnet automatisch den MD5-Hashwert für die angegebene Datei.
Ausgabe:

Das Argument -Path ist nicht obligatorisch, daher müssen wir es nicht verwenden. Stattdessen geben wir den Dateipfad an und fügen den Algorithmusparameter hinzu, um MD5 anstelle von SHA256 zu verwenden.
Wenn wir PowerShell in einem Skript verwenden, können wir eine Variable mit dem Ergebnis erstellen und den Hashwert mit der Hash-Eigenschaft wie $variable.Hash abrufen, um sicherzustellen, dass er denselben Wert wie die Originaldatei hat.
Hashing von Zeichenfolgen in PowerShell
Leider gibt es keine direkte Funktion oder eingebaute Befehle, um einen Hash aus einer Zeichenfolge in PowerShell zu generieren.
Es ist jedoch möglich, Get-FileHash mit einem Stream-Parameter zu verwenden, sodass es eine Lösung zur Berechnung des Hashs einer Zeichenfolge ist.
Lassen Sie uns direkt mit dem folgenden Snippet beginnen:
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("MD5Online")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream -Algorithm MD5
In diesem Code-Snippet erstellen wir ein MemoryStream-Objekt $stringAsStream und initialisieren einen StreamWriter $writer, um die Zeichenfolge MD5Online in den Stream zu schreiben. Dann leeren wir den Writer, um sicherzustellen, dass die Daten in den Stream geschrieben werden.
Nachdem wir die Position des Streams zurück zum Anfang gesetzt haben, verwenden wir das Cmdlet Get-FileHash mit dem Parameter -InputStream, der auf $stringAsStream gesetzt ist, und dem Parameter -Algorithm, der auf MD5 gesetzt ist. Dieser Befehl berechnet die MD5-Prüfziffer der bereitgestellten Zeichenfolge.
Ausgabe:

Im Vergleich zum ersten Abschnitt dieses Artikels besteht die einzige Änderung darin, dass wir -InputStream anstelle von -Path verwendet haben.
Wie Sie in der Ausgabe sehen können, erhalten wir den MD5-Hash unserer Zeichenfolge als Ergebnis.
Verwendung der Klasse [System.Security.Cryptography.MD5] in PowerShell
Die Klasse [System.Security.Cryptography.MD5] bietet Funktionalität zur Berechnung des MD5-Hashwerts von Daten. Diese Klasse ist Teil des Kryptografie-Namensraums des .NET Framework und bietet eine robuste und effiziente Lösung zur Generierung von MD5-Prüfziffern in PowerShell-Skripten.
Die Klasse [System.Security.Cryptography.MD5] bietet eine Methode namens ComputeHash(), um den MD5-Hashwert zu berechnen. Die Syntax lautet wie folgt:
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$md5: Stellt eine Instanz der MD5-Klasse dar, die mit der MethodeCreate()erstellt wurde.$hash: Speichert den berechneten MD5-Hashwert.$data: Gibt die Daten an, für die die MD5-Prüfziffer berechnet werden muss. Dies kann ein Byte-Array sein, das den Inhalt einer Datei oder eine Zeichenfolge darstellt.
Hier ist ein Beispiel:
$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString
In diesem Code-Snippet konvertieren wir die Zeichenfolge MD5Example in ein Byte-Array mit [System.Text.Encoding]::UTF8.GetBytes(). Dann erstellen wir eine Instanz der MD5-Klasse mit [System.Security.Cryptography.MD5]::Create() und rufen die Methode ComputeHash() auf, um den MD5-Hashwert für die bereitgestellten Daten zu generieren.
Schließlich konvertieren wir den Hashwert in ein Zeichenfolgenformat mit [System.BitConverter]::ToString() und entfernen alle Bindestriche in der Ausgabe mit dem Operator -replace.
Ausgabe:

Verwendung der Klasse MD5CryptoServiceProvider in PowerShell
Die Klasse MD5CryptoServiceProvider ist Teil des Kryptografie-Namensraums des .NET Framework. Diese Klasse bietet Funktionalität zur Berechnung des MD5-Hashwerts von Daten mithilfe des MD5-kryptografischen Algorithmus.
Die Klasse MD5CryptoServiceProvider bietet eine Methode namens ComputeHash(), um den MD5-Hashwert zu berechnen. Die Syntax lautet wie folgt:
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$md5: Stellt eine Instanz der KlasseMD5CryptoServiceProviderdar, die mitNew-Objecterstellt wurde.$hash: Speichert den berechneten MD5-Hashwert.$data: Gibt die Daten an, für die die MD5-Prüfziffer berechnet werden muss. Dies kann ein Byte-Array sein, das den Inhalt einer Datei oder eine Zeichenfolge darstellt.
Hier ist ein Beispiel:
$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString
In diesem Code-Snippet konvertieren wir die Zeichenfolge MD5Example in ein Byte-Array mit [System.Text.Encoding]::UTF8.GetBytes(). Dann erstellen wir eine Instanz der Klasse MD5CryptoServiceProvider mit New-Object und rufen die Methode ComputeHash() auf, um den MD5-Hashwert für die bereitgestellten Daten zu generieren.
Schließlich konvertieren wir den Hashwert in ein Zeichenfolgenformat mit [System.BitConverter]::ToString() und entfernen alle Bindestriche in der Ausgabe mit dem Operator -replace.
Ausgabe:

Fazit
PowerShell bietet mehrere Möglichkeiten zur Berechnung von MD5-Prüfziffern, die jeweils für verschiedene Szenarien und Komplexitätsgrade geeignet sind. Egal, ob Sie integrierte Cmdlets wie Get-FileHash verwenden, die Leistung von .NET-Klassen wie System.Security.Cryptography.MD5 nutzen oder kryptografische Anbieter wie MD5CryptoServiceProvider einsetzen, PowerShell-Benutzer haben vielseitige Werkzeuge zur Verfügung, um die Integrität und Sicherheit von Daten zu gewährleisten.
Durch das Verständnis und die effektive Nutzung dieser Methoden können PowerShell-Skripte Aufgaben, die MD5-Prüfziffern erfordern, präzise und zuverlässig ausführen.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn