Base64
Base64 proyecta datos binarios arbitrarios sobre 64 caracteres ASCII imprimibles (A-Z, a-z, 0-9, +, /) para que los datos binarios puedan viajar por canales de solo texto.
Propósito
Resolvió el problema de los primeros sistemas de correo que solo transportaban texto ASCII de 7 bits y no podían enviar adjuntos binarios directamente, evitando que las pasarelas alteraran los caracteres de control.
Mecanismo
El flujo de bytes de entrada se procesa en grupos de 3 bytes (24 bits) divididos en cuatro unidades de 6 bits, cada una proyectada a un carácter del alfabeto Base64. El grupo final incompleto se rellena con = hasta 4 caracteres. La longitud codificada es aproximadamente 4/3 de la entrada, y la longitud de salida siempre es múltiplo de 4.
Casos de uso
- Incrustar datos binarios en JSON, XML y URL (p. ej., imágenes pequeñas en Data URLs)
- Transporte de adjuntos MIME en el correo
- Codificación de usuario:contraseña en la autenticación básica HTTP
- Codificación de los segmentos de cabecera y carga útil de un JWT
Ejemplos
- entrada
HelloOutputSGVsbG8=5 bytes to 8 characters with one trailing = pad
Errores comunes
- Using standard Base64 directly in URLs, where + and / get percent-encoded and decoding fails
- Use Base64URL instead (- and _ replace + and /, and = padding is dropped)