Codificación Base64 en Windows PowerShell

  1. Acerca de Base 64
  2. Conversión a y desde Base64
Codificación Base64 en Windows PowerShell

La codificación Base64 es uno de los métodos de codificación de binario a texto que representará datos binarios en un formato de cadena más legible.

No hay comandos nativos de Windows PowerShell para la conversión a Base64 (a partir de PowerShell [Core] 7.1). Entonces, por ahora, se necesita el uso directo de la biblioteca .NET. Este artículo le mostrará los posibles métodos de conversión a y desde Base64 usando Windows PowerShell y la biblioteca .NET.

Acerca de Base 64

En términos técnicos, la codificación Base64 convierte tres bytes de 8 bits en cuatro bytes de 6 bits, que consisten en bits numerados del 0 al 63, de ahí el nombre Base64. Además, los datos decodificados son 3/4 de la sintaxis de la cadena original.

Si bien el método de codificación Base64 puede codificar texto sin formato, su beneficio real es la codificación de caracteres no imprimibles interpretados por sistemas de transmisión como caracteres de control.

Por lo tanto, siempre debe especificar explícitamente qué codificación de caracteres deben representar los bytes Base64.

Conversión a y desde Base64

Al convertir a Base64, primero debe obtener una representación de bytes de la cadena que está tratando de codificar utilizando la codificación de caracteres que espera el usuario de la cadena Base64.

Además, al convertir DESDE Base64, debe interpretar la matriz de bytes resultante como una cadena usando la misma codificación que usamos para crear la representación de Base64.

Los siguientes ejemplos a continuación se convertirán a y desde formatos de cadena codificados en UTF-8 utilizando la biblioteca .NET:

Convirtiendo a Base64:

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

Producción :

TW90b3JoZWFk

Convirtiendo desde Base64:

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

Producción :

Motorhead

Este artículo siguió definiendo la codificación Base64 como una serie de bytes que se convierten a un formato de cadena ASCII. Sin embargo, con Windows PowerShell y la biblioteca .NET, podemos convertir directamente hacia y desde otros formatos de cadena como Unicode o UTF-8.

Para convertir hacia y desde UTF-16LE (“Unicode”) o ASCII, sustituya [Text.Encoding]::Unicode y [Text.Encoding]::ASCII por [Text.Encoding]::UTF8 respectivamente.

Ejemplo de sintaxis:

[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

Artículo relacionado - PowerShell Encoding