Hoja de referencia para codificar y decodificar Base64: ejemplos de comandos para Windows, Linux y Mac.

Codificar y decodificar archivos a Base64 en Windows, Linux y Mac.

Índice

Esta hoja de trucos muestra cómo codificar y decodificar archivos y cadenas a Base64 desde la línea de comandos en Windows, Linux y macOS: no se requieren herramientas adicionales.

hombre barbudo realizando código avanzado de noche

Esta guía forma parte de Herramientas para desarrolladores: La guía completa de flujos de trabajo de desarrollo modernos.

Base64 convierte datos binarios en texto ASCII utilizando 64 caracteres (A–Z, a–z, 0–9, +, /). Se utiliza ampliamente para codificar credenciales en HTTP Basic Auth, cargas útiles de JWT (consulta Decodificar e imprimir token JWT), secretos de Kubernetes, URIs de datos en HTML/CSS y la incrustación de datos binarios en JSON o variables de entorno. El uso de la línea de comandos mantiene los datos sensibles de forma local y permite la automatización mediante scripts en flujos de CI/CD.

Codificación y decodificación Base64 en Windows

Windows no incluye un comando base64 dedicado, pero puedes utilizar herramientas integradas.

Usando Command Prompt con Certutil

  1. Abre Command Prompt.

  2. Codifica un archivo a Base64:

    certutil -encode input.bin output.b64
    

    Reemplaza input.bin con la ruta de tu archivo y output.b64 con el nombre de archivo de salida deseado.

  3. Para imprimir Base64 en la consola sin guardar un archivo temporal:

    certutil -encode input.bin tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64
    

    findstr /v /c:- elimina las líneas -----BEGIN CERTIFICATE----- y -----END CERTIFICATE----- que añade certutil.

Decodificar Base64 en Windows (Certutil)

certutil -decode encoded.b64 decoded.bin

Usar PowerShell para codificar y decodificar

Codificar un archivo:

[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("C:\path\to\file.bin"))

Codificar una cadena (UTF-8):

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("Hello, World!"))
# Salida: SGVsbG8sIFdvcmxkIQ==

Decodificar Base64 a cadena:

[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8sIFdvcmxkIQ=="))
# Salida: Hello, World!

Decodificar Base64 a archivo:

[System.IO.File]::WriteAllBytes("decoded.bin", [Convert]::FromBase64String((Get-Content encoded.b64 -Raw)))

Estos métodos funcionan sin instalar software adicional. Para más automatización de shell, consulta la Hoja de trucos de PowerShell.

Codificación y decodificación Base64 en Linux

El comando base64 viene preinstalado en la mayoría de las distribuciones de Linux (GNU coreutils).

Sintaxis básica

base64 [OPCIONES] [ARCHIVO]

Sin archivo o cuando el archivo es -, lee desde la entrada estándar.

Codificar un archivo a Base64

base64 input_file > output_file

Ejemplo:

base64 myfile.txt > encoded.txt

Para imprimir el contenido codificado en el terminal:

base64 myfile.txt

Codificar una cadena a Base64

echo -n "Hello, World!" | base64
# Salida: SGVsbG8sIFdvcmxkIQ==

Usa -n con echo para evitar un salto de línea final. Para decodificar cadenas en JWT, consulta Decodificar e imprimir token JWT.

Desactivar el ajuste de línea (-w 0)

Por defecto, base64 envuelve la salida cada 76 caracteres. Para JSON, variables de entorno, URLs o uso de Terraform base64encode, desactiva el ajuste de línea:

base64 -w 0 input_file > output_file

Decodificar Base64 en Linux

base64 -d encoded_file > decoded_file
# o
base64 --decode encoded_file > decoded_file

Ejemplo:

echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d
# Salida: Hello, World!

Alternativa: OpenSSL

echo -n "data" | openssl base64 -e
echo "ZGF0YQ==" | openssl base64 -d

Para más flujos de trabajo de línea de comandos, la Hoja de trucos de Bash cubre el uso de tuberías (pipes) y scripting.

Codificación y decodificación Base64 en macOS

macOS incluye un comando base64 similar al de Linux, pero requiere la bandera -i para la entrada de archivos.

Codificar un archivo a Base64

base64 -i input_file > output_file

Ejemplo:

base64 -i myfile.txt > encoded.txt

Para imprimir en el terminal:

base64 -i myfile.txt

Codificar y copiar al portapapeles

base64 -i input_file | pbcopy

Decodificar Base64 en Mac

base64 -D -i encoded_file > decoded_file

La bandera -D habilita el modo de decodificación; -i especifica el archivo de entrada. Estos comandos funcionan en todas las versiones modernas de macOS a partir de la 10.7.

Referencia del comando base64 de Linux

Salida completa de ayuda para la herramienta base64 de GNU:

$ base64 --help

Uso: base64 [OPCIÓN]... [ARCHIVO]
Codificar o decodificar ARCHIVO, o entrada estándar, a salida estándar.

Sin ARCHIVO, o cuando ARCHIVO es -, leer la entrada estándar.

Los argumentos obligatorios para las opciones largas también son obligatorios para las opciones cortas.
  -d, --decode          decodificar datos
  -i, --ignore-garbage  al decodificar, ignorar caracteres no alfabéticos
  -w, --wrap=COLS       envolver líneas codificadas después de COLS caracteres (por defecto 76).
                          Usa 0 para desactivar el ajuste de línea
      --help        mostrar esta ayuda y salir
      --version     mostrar información de versión y salir

Los datos se codifican como se describe para el alfabeto base64 en RFC 4648.
Al decodificar, la entrada puede contener saltos de línea además de los bytes del
alfabeto base64 formal. Usa --ignore-garbage para intentar recuperar
cualquier otro byte no alfabético en el flujo codificado.
...

Casos de uso comunes

Caso de uso Comando / enfoque
Encabezado/carga útil de JWT Decodificar con base64 -d o jq — consulta Decodificar e imprimir token JWT
HTTP Basic Auth echo -n "usuario:contraseña" | base64 -w 0 para Authorization: Basic <resultado>
Secreto de Kubernetes kubectl create secret generic mysecret --from-literal=key=$(base64 -w 0 file.bin)
cURL con Basic Auth Usa -u usuario:contraseña o -H "Authorization: Basic $(echo -n usuario:contraseña | base64 -w 0)" — consulta Hoja de trucos de cURL
URI de datos en HTML data:image/png;base64,$(base64 -w 0 image.png)

Enlaces útiles