Base64-Codierung in Windows PowerShell

  1. Über Base64
  2. Konvertieren zu und von Base64
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 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

Verwandter Artikel - PowerShell Encoding