Skip to main content

Base64

Codifica o decodifica Base64.

Todos los cálculos se realizan localmente en tu navegador. No se envía ningún dato al servidor.

Los resultados tienen carácter informativo. Contrástalos con otras fuentes.

Entender Base64

Base64 reescribe datos binarios arbitrarios con 64 caracteres imprimibles, de modo que puedan viajar por canales que solo aceptan texto: cuerpos de correo, cadenas JSON, URL data:, cabeceras HTTP. Es un formato de transporte, no una medida de seguridad.

Cómo funciona

  • Toma la entrada de tres en tres bytes (24 bits) y divide esos 24 bits en cuatro grupos de seis.
  • Cada grupo de 6 bits es un número de 0 a 63 que se usa como índice en el alfabeto A–Z, a–z, 0–9, + y /.
  • Cuando la longitud de entrada no es múltiplo de tres, la salida se rellena con uno o dos caracteres = para que siempre sea múltiplo de cuatro.
  • La variante segura para URL cambia + y / por - y _, porque + y / tienen su propio significado dentro de una URL.
3 bytes (24 bits) → 4 grupos de 6 bits → 4 caracteres del alfabeto
longitud de salida = 4 × ceil(longitud de entrada / 3)

Ejemplo resuelto

Codificar la cadena de tres caracteres Hi!: exactamente un grupo completo, así que no hace falta relleno.

  1. H = 0x48 = 01001000, i = 0x69 = 01101001, ! = 0x21 = 00100001
  2. concatenar: 010010000110100100100001
  3. dividir en grupos de seis bits: 010010 | 000110 | 100100 | 100001
  4. como números: 18, 6, 36, 33
  5. buscar en el alfabeto: 18→S, 6→G, 36→k, 33→h

Hi! se codifica como SGkh. Cuatro caracteres de salida por cada tres bytes de entrada: la proporción fija 4:3 que hace que Base64 sea un 33% mayor que los datos que transporta.

Cómo leer el resultado

  • Base64 no es cifrado y no ofrece ninguna protección. Cualquiera lo descodifica al instante: esta página lo hace. Nunca lo uses para ocultar un secreto.
  • Cuenta con un crecimiento del 33% aproximadamente, más el relleno. Un archivo de 10 MB pasa a unos 13,3 MB al codificarlo, y por eso incrustar imágenes grandes como URL data: infla una página.
  • El relleno = no lleva datos. Algunos analizadores lo exigen y otros lo rechazan; JWT lo elimina por completo.
  • La codificación opera sobre bytes, no sobre caracteres. El texto debe convertirse antes a bytes, y este codificador usa UTF-8: la misma cadena puede dar otro resultado con otra codificación de caracteres.

Preguntas frecuentes

¿Base64 es una forma de cifrado?
No. El cifrado requiere una clave y está pensado para resistir a un atacante; Base64 no requiere nada y se revierte en microsegundos. Si encuentras una cadena Base64 en un archivo de configuración, trata su contenido como totalmente público.
¿Por qué algunas cadenas Base64 terminan en = o ==?
Porque la entrada no era múltiplo de tres bytes. Un byte sobrante produce dos caracteres de relleno y dos bytes sobrantes producen uno. El relleno devuelve la salida a un múltiplo de cuatro.
¿Qué es base64url y cuándo lo necesito?
Es la misma codificación con - y _ en lugar de + y /, de forma que la salida es segura dentro de una ruta o una cadena de consulta sin escapes adicionales. Lo usan los JWT, los parámetros de OAuth y muchas API.