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
- Convierte el texto a bytes UTF-8: una eñe son dos y un emoji cuatro
- Agrupa los bytes de tres en tres
- Reparte cada grupo de 24 bits en cuatro trozos de seis
- Sustituye cada trozo por su carácter del alfabeto
- 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.