HOWTO · PowerShell

Codificación Base64 en Windows PowerShell

Este artículo mostrará cómo codificar y decodificar una cadena base64. Windows PowerShell no tiene un comando nativo en su versión actual y, por lo tanto, le mostraremos un método alternativo sobre cómo hacerlo.

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="))