HOWTO · PowerShell

Base64-Codierung in Windows PowerShell

In diesem Artikel wird gezeigt, wie Sie eine Base64-Zeichenfolge codieren und decodieren. Windows PowerShell verfügt in seiner aktuellen Version über keinen nativen Befehl, daher zeigen wir Ihnen eine alternative Methode, wie Sie dies tun können.

Auf dieser Seite

Die Base64-Codierung ist eine der Methoden der Binär-zu-Text-Codierung, die Binärdaten in einem besser lesbaren Zeichenkettenformat darstellt.

Es gibt keine Windows PowerShell-nativen Befehle für die Base64-Konvertierung (ab PowerShell [Core] 7.1). Daher ist vorerst die direkte Verwendung der .NET-Bibliothek erforderlich. Dieser Artikel zeigt Ihnen die möglichen Methoden zum Konvertieren zu und von Base64 mithilfe von Windows PowerShell und der .NET-Bibliothek.

Über Base64

Technisch ausgedrückt wandelt die Base64-Codierung drei 8-Bit-Bytes in vier 6-Bit-Bytes um, die aus Bits mit den Nummern 0-63 bestehen, daher der Name Base64. Außerdem sind die decodierten Daten 3/4 so lang wie die ursprüngliche Zeichenkettensyntax.

Während die Base64-Codierungsmethode Klartext codieren kann, ist ihr eigentlicher Vorteil die Codierung nicht druckbarer Zeichen, die von Übertragungssystemen als Steuerzeichen interpretiert werden.

Daher müssen Sie immer explizit angeben, welche Zeichenkodierung die Base64-Bytes darstellen sollen.

Konvertieren zu und von Base64

Beim Konvertieren in Base64 müssen Sie zunächst eine Byte-Darstellung der Zeichenfolge erhalten, die Sie zu codieren versuchen, indem Sie die Zeichencodierung verwenden, die der Benutzer der Base64-Zeichenfolge erwartet.

Außerdem müssen Sie beim Konvertieren von FROM Base64 das resultierende Array von Bytes als Zeichenfolge interpretieren, wobei dieselbe Codierung verwendet wird, die wir zum Erstellen der Base64-Darstellung verwendet haben.

Die folgenden Beispiele unten konvertieren mithilfe der .NET-Bibliothek in und aus UTF-8-codierten Zeichenkettenformaten:

Umstellung auf Base64:

[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes('Motorhead'))

Ausgabe:

TW90b3JoZWFk

Konvertieren von Base64:

[Text.Encoding]::ASCII.GetString([Convert]::FromBase64String('TW90b3JoZWFk')) 

Ausgabe:

Motorhead

In diesem Artikel wurde die Base64-Codierung weiterhin als eine Reihe von Bytes definiert, die in ein ASCII-Zeichenkettenformat konvertiert werden. Mit Windows PowerShell und der .NET-Bibliothek können wir jedoch direkt in und aus anderen Zeichenkettenformaten wie Unicode oder UTF-8 konvertieren.

Um stattdessen nach und von UTF-16LE (“Unicode”) oder ASCII zu konvertieren, ersetzen Sie [Text.Encoding]::Unicode und [Text.Encoding]::ASCII für [Text.Encoding]::UTF8 bzw.

Beispielsyntax:

[Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
[Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))