Formatear JSON
Formatear, validar y plegar JSON.
Desarrollo
Codificar y descodificar texto y archivos.
Debe ir primero, porque el error aparece en sistemas reales.
Base64 no tiene clave ni secreto. Es una transposición fija entre dos escrituras de los mismos datos, y cualquier dispositivo la deshace.
Aun así se encuentran contraseñas y claves de API guardadas en Base64 «para que no queden en claro». Quien pueda leer el archivo recupera el valor en un segundo. No se ha puesto ningún obstáculo.
Para lo que sirve realmente: hacer pasar datos que no son texto —una imagen, un certificado, un adjunto— por un canal que solo admite texto. Los adjuntos de correo funcionan así, igual que las imágenes incrustadas directamente en HTML o CSS.
Para proteger algo de verdad hace falta cifrado, y para contraseñas una función de hash pensada para eso.
Base64 trabaja con bytes, no con letras. Cómo se convierte una letra en bytes depende de la codificación de caracteres, y ahí es donde se tuerce.
En UTF-8 una letra corriente ocupa un byte, pero una á, una é o una ñ ocupan dos. El símbolo del euro ocupa tres. Codificar con una codificación y descodificar con otra devuelve caracteres ilegibles.
Esta herramienta usa UTF-8 en ambos sentidos, que es lo correcto casi siempre. Si al descodificar salen caracteres extraños, el origen se generó probablemente con una codificación antigua.
Para uso en una dirección web existe una variante llamada base64url, que sustituye los caracteres + y / por - y _, porque los dos primeros tienen significado propio en una dirección. Un JWT usa esa variante.
Base64 engorda los datos alrededor de un tercio: tres bytes se convierten en cuatro caracteres.
De ahí que no convenga usarlo a la ligera con archivos grandes. Una imagen de un megabyte se convierte en unos 1,37 megabytes de texto, sin contar lo que la rodea.
Para imágenes pequeñas dentro de CSS o HTML el intercambio compensa: una petición de red menos. Por encima de unos pocos kilobytes, una referencia normal es mejor.
Los signos igual del final son relleno y forman parte del formato. Algunos sistemas los omiten, y al descodificar hay que reponerlos.
Todo ocurre en esta página y no se transmite nada.
No. No hay clave y cualquiera puede deshacerlo. No lo uses nunca para ocultar algo.
Diferencia de codificación. Esta herramienta usa UTF-8; los orígenes antiguos a veces otra.
Una variante donde + y / se sustituyen por - y _, para caber en una dirección web. Los JWT la usan.
Alrededor de un tercio: tres bytes son cuatro caracteres.
Son relleno del final. Algunos sistemas los omiten.
No.