Encodage Base64 dans Windows PowerShell
L’encodage Base64 est l’une des méthodes d’encodage binaire-texte qui représente les données binaires dans un format de chaîne plus lisible.
Il n’y a pas de commandes natives Windows PowerShell pour la conversion Base64 (à partir de PowerShell [Core] 7.1). Donc, pour l’instant, l’utilisation directe de la bibliothèque .NET est nécessaire. Cet article vous montrera les méthodes possibles de conversion vers et depuis Base64 à l’aide de Windows PowerShell et de la bibliothèque .NET.
À propos de Base 64
En termes techniques, l’encodage Base64 convertit trois octets de 8 bits en quatre octets de 6 bits, composés de bits numérotés de 0 à 63, d’où le nom Base64. De plus, les données décodées sont 3/4 aussi longues que la syntaxe de chaîne d’origine.
Alors que la méthode d’encodage Base64 peut encoder du texte brut, son véritable avantage est d’encoder des caractères non imprimables interprétés par les systèmes de transmission comme des caractères de contrôle.
Par conséquent, vous devez toujours spécifier explicitement quel codage de caractères les octets Base64 doivent représenter.
Conversion vers et depuis Base64
Lors de la conversion en Base64, vous devez d’abord obtenir une représentation en octets de la chaîne que vous essayez de coder en utilisant le codage de caractères attendu par l’utilisateur de la chaîne Base64.
De plus, lors de la conversion FROM Base64, vous devez interpréter le tableau d’octets résultant comme une chaîne en utilisant le même encodage que celui que nous avons utilisé pour créer la représentation Base64.
Les exemples suivants ci-dessous convertiront vers et depuis les formats de chaîne encodés UTF-8 à l’aide de la bibliothèque .NET :
Conversion en Base64 :
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes('Motorhead'))
Production :
TW90b3JoZWFk
Conversion depuis Base64 :
[Text.Encoding]::ASCII.GetString([Convert]::FromBase64String('TW90b3JoZWFk'))
Production :
Motorhead
Cet article a continué à définir l’encodage Base64 comme une série d’octets convertis en un format de chaîne ASCII. Cependant, avec Windows PowerShell et la bibliothèque .NET, nous pouvons directement convertir vers et depuis d’autres formats de chaîne tels que Unicode ou UTF-8.
Pour convertir vers et depuis UTF-16LE (“Unicode”) ou ASCII à la place, remplacez [Text.Encoding]::Unicode
et [Text.Encoding]::ASCII
par [Text.Encoding]::UTF8
respectivement.
Exemple de syntaxe :
[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