bitlvl
ES

Chuleta de Base64 y codificaciones

Todo lo de Base64 que merece la pena consultar, incluidas las líneas únicas para cada lenguaje.

Cabe en una página A4 / Letter en vertical; usa «Guardar como PDF» en el diálogo de impresión para conservar una copia.

Alfabeto (valor → carácter)

0 A1 B2 C3 D4 E5 F6 G7 H
8 I9 J10 K11 L12 M13 N14 O15 P
16 Q17 R18 S19 T20 U21 V22 W23 X
24 Y25 Z26 a27 b28 c29 d30 e31 f
32 g33 h34 i35 j36 k37 l38 m39 n
40 o41 p42 q43 r44 s45 t46 u47 v
48 w49 x50 y51 z52 053 154 255 3
56 457 558 659 760 861 962 +63 /

URL-safe (RFC 4648 §5): 62 = -, 63 = _, normalmente sin relleno. Carácter de relleno: =.

Cómo funciona

bytes:  01001000 01101001 00100001     "Hi!"
6 bits: 010010 000110 100100 100001
chars:    S      G      k      h       "SGkh"
"Hi"  → 01001000 01101001 (16 bits) → 010010 000110 1001(00) → "SGk" + "="
"H"   → 8 bits → 010010 00(0000)          → "SA"  + "=="
Longitud de entrada mod 3 = 0sin relleno
= 12 caracteres + ==
= 23 caracteres + =
Tamaño de salida⌈n / 3⌉ × 4 (≈ +33 %)
Tamaño de entrada a partir de la salidalong × 3 / 4 − relleno
MIME (RFC 2045)líneas de 76 caracteres, CRLF
PEMlíneas de 64 caracteres

Variantes

Base64A–Z a–z 0–9 + /; correo, JSON, URL data:
Base64URL- y _ en vez de + /; JWT, OAuth, nombres de archivo
Base32A–Z 2–7; secretos TOTP, sin distinguir mayúsculas, +60 %
Base32hex0–9 A–V; ordena numéricamente (DNSSEC NSEC3)
Hex (Base16)0–9 a–f; +100 %, trivial de leer
Base58sin 0 O I l; direcciones Bitcoin
Base85 / Ascii85+25 %; PDF, diffs binarios de git
base64 de bcrypt./A–Z a–z 0–9, otro orden; solo dentro de hashes bcrypt

Comandos

base64 file; base64 -dGNU coreutils (-w0 sin partir líneas)
openssl base64 -AOpenSSL (-A = una sola línea)
echo -n 'text' | base64-n: sin salto de línea final en la entrada
base64.b64encode(b), b64decode(s)Python; urlsafe_b64encode para URL-safe
btoa(s), atob(s)JS, solo cadenas Latin-1; para UTF-8 usa TextEncoder + fromCharCode, o Buffer en Node
Buffer.from(s).toString('base64'); Buffer.from(b64, 'base64')Node.js (también 'base64url')
base64.StdEncoding.EncodeToString(b)Go; RawURLEncoding para URL-safe sin relleno
base64_encode(), base64_decode()PHP
Base64.strict_encode64(s)Ruby (encode64 parte las líneas)
[Convert]::ToBase64String($bytes)PowerShell
SELECT TO_BASE64('x'); encode('x','base64')MySQL; PostgreSQL

Recuerda

  • Base64 no es cifrado; cualquiera puede decodificarlo.
  • Los errores de decodificación suelen ser un = que falta, una cadena URL-safe en un decodificador estricto o saltos de línea.
  • El texto debe ser bytes primero: elige UTF-8 y dilo.
  • Una URL data: es data:<mime>;base64,<datos>.

Los resultados y mensajes de esta herramienta se muestran en inglés.

Preguntas

¿Dónde codifico o decodifico?

La herramienta de Base64 maneja texto y archivos en ambos sentidos, incluidas entradas URL-safe y sin relleno, y muestra los bytes decodificados como hex.