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
MD5CryptoServiceProvider
in 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-Path
angegebene Datei verweist. -
[[-Algorithm] <algo>]
: Gibt den zu verwendenden Hashalgorithmus (z. B.MD5
,SHA1
) an. -
[Options]
: Zusätzliche Einstellungen wie-Path
,-LiteralPath
,-Force
usw. 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 KlasseMD5CryptoServiceProvider
dar, die mitNew-Object
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 = 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