Web y codificación · 5 minutos de lectura
Base64 decodificar y codificar: para transporte, no para
Base64 existe para mover datos binarios a través de canales que solo aceptan texto. Asigna cada tres bytes a cuatro caracteres imprimibles, razón por la cual la salida codificada es aproximadamente un tercio más grande que la entrada y por qué una decodificación base64 es completamente reversible, sin clave, porque base64 es codificación, no encriptación. Cualquiera puede decodificar cualquier cosa que usted codifique, y cualquier herramienta que sugiera lo contrario le está mintiendo.
Actualizado
El alfabeto y el relleno.
El alfabeto estándar es `A–Z`, `a–z`, `0–9`, `+` y `/`, con `=` rellenando el grupo final cuando la longitud de entrada no es múltiplo de tres. Ese relleno no es decorativo: le dice al decodificador cuántos bytes lleva el último grupo. Eliminarlo es común en las URL y funciona porque los decodificadores infieren la longitud, pero las implementaciones estrictas rechazarán la forma sin relleno.
"YamlBox" → WWFtbEJveA==
"YamlBo" → WWFtbEJv
base64url: la variante que acaba en tokens
Las URL tratan `+`, `/` y `=` como significativas, por lo que la variante base64url las reemplaza con `-` y `_` y, a menudo, omite el relleno por completo. Cada token web JSON utiliza este alfabeto, por lo que una carga útil JWT pegada en un decodificador estricto Base64 puede fallar en caracteres que parecen perfectamente normales. Si una cadena se decodifica en algo casi legible pero no del todo legible, generalmente estás a un cambio de alfabeto de la respuesta.
Dónde lo encuentras en la práctica
- URI de datos: incrustar imágenes y fuentes pequeñas directamente en CSS o HTML como `data:image/png;base64,…`.
- JSON Web Tokens: cada uno de los tres segmentos está codificado en base64url.
- Autenticación HTTP básica: `Authorization: Basic` lleva base64 de `user:password`, por lo que siempre debe viajar a través de TLS.
- Archivos adjuntos de correo electrónico: MIME ha utilizado base64 para partes binarias desde la década de 1980.
- API que no pueden aceptar archivos binarios: cargas útiles de imágenes y claves colocadas en campos de solo texto.
Por qué la salida de decodificación Base64 parece basura
El error clásico es Unicode. Los antiguos `btoa` y `atob` de JavaScript operan con un byte por carácter, por lo que una cadena que contiene `é`, `₹` o cualquier emoji arroja o produce mojibake. La solución es codificar primero los bytes UTF-8 (`TextEncoder` en el navegador, `Buffer.from(str, "utf8")` en Node) y luego los de base64. Si una decodificación devuelve caracteres que parecen plausibles pero incorrectos, la causa más probable es que el codificador nunca convirtió texto a bytes UTF-8.
Base64 no proporciona confidencialidad ni integridad. Trate un secreto codificado exactamente como lo haría con el secreto en bruto, porque eso es lo que es.
¿Por qué decodificar localmente?
Los encabezados de autenticación básica, los tokens y los URI de datos se decodifican en credenciales o datos privados, por lo que pegarlos en un decodificador del lado del servidor es una revelación. El codificador/decodificador YamlBox Base64 funciona en la página con el manejo UTF-8 realizado correctamente, admite los alfabetos estándar y seguro URL y funciona sin conexión.
Base64 Codificador / Decodificador — preguntas frecuentes
¿Es cifrado Base64?
No. Es una codificación reversible sin clave, por lo que cualquiera puede decodificarla. Existe para que los datos binarios puedan viajar a través de canales de solo texto, nunca para proteger los datos. Utilice TLS y cifrado real como AES-GCM para mayor confidencialidad.
¿Cuánto mayor es la producción de Base64?
Exactamente un tercio más grande, más un poco de relleno, porque tres bytes se convierten en cuatro caracteres. Esa sobrecarga es la razón por la cual base64 se usa para activos pequeños en línea y se evita para los grandes.
¿Por qué una decodificación Base64 devuelve caracteres extraños?
Por lo general, se trata de una falta de coincidencia de codificación: el texto original no se convirtió a bytes UTF-8 antes de la codificación, o está decodificando datos base64url con un decodificador estándar. Verifique los caracteres `-` y `_` y confirme que el codificador de origen utilizó UTF-8.
Herramientas mencionadas en esta publicación.
Más artículos para leer
6 minutos de lectura
Decodificador JWT: qué hay dentro de un token y qué no
Utilice un decodificador JWT para inspeccionar el encabezado, la carga útil y el vencimiento de un token, y comprenda por qué la decodificación no es una verificación, ya que las verificaciones de reclamos están detrás de la mayoría de los 401.
5 minutos de lectura
Codificación URL: cuándo escapar y cuándo estás rompiendo
URL codifica y decodifica correctamente: caracteres reservados, más frente a %20, encodeURI frente a encodeURIComponent y los errores de doble codificación detrás de los enlaces rotos.
5 minutos de lectura
cURL para recuperar: mover una solicitud del terminal al
cURL para recuperar la conversión para JavaScript: encabezados, cuerpos, autenticación y métodos asignados correctamente, además de la realidad CORS que decide si una solicitud funciona.