¿Cuál es el propósito real de la codificación Base64?

82

¿Por qué tenemos la codificación Base64? Soy un principiante y realmente no entiendo por qué ofuscarías los bytes en otra cosa (a menos que sea encriptación). En uno de los libros que leí, la codificación Base64 es útil cuando la transmisión binaria no es posible. P.ej. Cuando publicamos un formulario, está codificado. Pero, ¿por qué convertimos bytes en letras? ¿No podríamos simplemente convertir bytes en formato de cadena con un espacio entre ellos? Por ejemplo, 00000001 00000004? ¿O simplemente 0000000100000004sin espacio porque los bytes siempre vienen en pares de 8?

Jack
fuente
11
Porque acaba de convertir 1 byte en 8 en lugar de 3 en 4 como lo hace con base64 (si la memoria no me sirve correctamente). El ancho de banda es finito.
Brian Roach
Estás confundiendo bits (con 8 bits haces un byte) y bytes, que pueden venir en cualquier tipo de agrupación.
Denys Séguret

Respuestas:

108

Base64 es una forma de codificar datos binarios en un conjunto de caracteres ASCII conocido por casi todos los sistemas informáticos, con el fin de transmitir los datos sin pérdida o modificación del contenido en sí. Por ejemplo, los sistemas de correo no pueden manejar datos binarios porque esperan datos ASCII (textuales). Entonces, si desea transferir una imagen u otro archivo, se corromperá debido a la forma en que maneja los datos.

Nota: la codificación base64 NO es una forma de cifrar ni una forma de compactar datos. De hecho, un dato codificado en base64 es 1.333… veces más grande que el dato original. Es solo una forma de asegurarse de que no se pierdan ni modifiquen datos durante la transferencia.

giorgio
fuente
5
Los datos codificados en Base64 son exactamente 1.333 (3) veces más grandes que los datos originales + 0-3 caracteres adicionales adicionales dependiendo de la longitud de los datos de entrada módulo 4. Es porque cada carácter codificado en base64 almacena 6 bits de información (64 caracteres diferentes) .
también
2
los datos anteriores y posteriores siguen siendo binarios. entonces, ¿por qué se pierden los datos?
Naresh Teli
12

Base64 es un mecanismo que permite representar y transferir datos binarios a través de medios que solo permiten caracteres imprimibles. Es la forma más popular de "Codificación base", siendo las otras conocidas en uso Base16 y Base32.

La necesidad de Base64 surgió de la necesidad de adjuntar contenido binario a correos electrónicos como imágenes, videos o contenido binario arbitrario. Dado que SMTP [RFC 5321] solo permitía caracteres US-ASCII de 7 bits dentro de los mensajes, era necesario representar estos flujos de octetos binarios utilizando los caracteres ASCII de siete bits ...

Espero que esto responda la pregunta

Ahmed Shah
fuente
3

Base64 es una forma más o menos compacta de transmitir (codificar, de hecho, pero con el objetivo de transmitir) cualquier tipo de datos binarios.

Ver http://en.wikipedia.org/wiki/Base64

"La regla general es elegir un conjunto de 64 caracteres que sea parte de un subconjunto común a la mayoría de las codificaciones y también imprimible".

Ese es un propósito muy general y la necesidad común es no desperdiciar más espacio del necesario.

Históricamente, se basa en el hecho de que existe un subconjunto común de (casi) todas las codificaciones utilizadas para almacenar caracteres en bytes y que muchos de los 2 ^ 8 bytes posibles corren el riesgo de pérdida o transformaciones durante la transferencia de datos simple (por ejemplo, una copia) pegar-enviar-enviar-correo-recibir-copiar-pegar secuencia).

(Por favor, redirija el voto positivo al comentario de Brian, solo lo hago más completo y, con suerte, más claro).

Denys Séguret
fuente
No, es temprano y no tenía ganas de dar una respuesta completa. Esto es bueno.
Brian Roach