Base64-Codierung in Windows PowerShell
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="))
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn