So erhalten Sie die MD5-Prüfziffer in PowerShell

  1. Verwendung des MD5-Hashalgorithmus in PowerShell
  2. Verwendung der Klasse [System.Security.Cryptography.MD5] in PowerShell
  3. Verwendung der Klasse MD5CryptoServiceProvider in PowerShell
  4. Fazit
So erhalten Sie die MD5-Prüfziffer in PowerShell

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 wir MD5.
  • -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:

Die MD5-Prüfziffer in PowerShell abrufen - Ausgabe 1

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:

den md5-Checksum in PowerShell abrufen - Ausgabe 2

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 Methode Create() 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:

MD5-Prüfziffer in PowerShell erhalten - Ausgabe 3

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 Klasse MD5CryptoServiceProvider dar, die mit New-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:

Die MD5-Prüfziffer in PowerShell abrufen - Ausgabe 4

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn