Saltar al contenido
MasterMath

Codificador y decodificador Base64

Codifica un texto a Base64 o descodifica uno, con acentos y emojis bien tratados, y con la variante segura para URL.

Resultado

—

Resultado—
Entrada—
Salida—
Lo que crece—
Caracteres de relleno—

Cómo se ha calculado

    La fórmula

    cada 3 bytes → 4 caracteres de un alfabeto de 64

    De dónde sale

    Base64 no cifra ni comprime: representa bytes con 64 caracteres imprimibles para que sobrevivan a sitios que solo admiten texto, como un correo o una URL. Toma los bytes de tres en tres —24 bits— y los reparte en cuatro grupos de seis, y cada grupo de seis bits es un carácter. Por eso el resultado crece siempre un tercio, y por eso los datos que no llegan a tres bytes se completan con el signo igual.

    Cómo calcularlo a mano

    1. Convierte el texto a bytes UTF-8: una eñe son dos y un emoji cuatro
    2. Agrupa los bytes de tres en tres
    3. Reparte cada grupo de 24 bits en cuatro trozos de seis
    4. Sustituye cada trozo por su carácter del alfabeto
    5. Si el último grupo está incompleto, rellena con =

    Lo que conviene saber

    La trampa clásica es usar btoa y atob del navegador directamente: trabajan sobre cadenas de un byte por carácter y revientan con la primera eñe o el primer emoji, que es precisamente lo que alguien pega. Aquí el texto pasa antes por UTF-8. La variante segura para URL cambia el más por guion y la barra por guion bajo, y suele quitar el relleno, porque esos tres caracteres tienen significado en una dirección web y en un token JWT. Y una advertencia que conviene repetir: Base64 se lee a simple vista. Una contraseña en Base64 sigue siendo una contraseña en claro con otro aspecto.

    Preguntas frecuentes

    ¿Base64 es cifrado?

    No. Cualquiera lo descodifica en un segundo. Es una forma de escribir bytes con caracteres imprimibles, nada más.

    ¿Por qué crece un tercio?

    Porque tres bytes pasan a cuatro caracteres: seis bits útiles por cada ocho.

    ¿Qué es el signo igual del final?

    Relleno. Indica que el último grupo tenía uno o dos bytes en vez de tres.

    ¿Qué cambia la variante segura para URL?

    El más por guion, la barra por guion bajo y, normalmente, se quita el relleno. Es la que usan los tokens JWT.