Pregunta ¿Para qué se utiliza la codificación base 64?


He escuchado a personas hablar sobre la "codificación de la base 64" aquí y allá. ¿Para qué se usa esto?


595
2017-10-14 14:50


origen


Respuestas:


Cuando tiene algunos datos binarios que desea enviar a través de una red, generalmente no lo hace simplemente transmitiendo los bits y bytes a través del cable en un formato sin formato. ¿Por qué? porque algunos medios están hechos para transmitir texto. Nunca se sabe: algunos protocolos pueden interpretar sus datos binarios como caracteres de control (como un módem), o sus datos binarios podrían estropearse porque el protocolo subyacente podría pensar que ha ingresado una combinación especial de caracteres (como cómo FTP traduce la línea) terminaciones).

Para evitar esto, las personas codifican los datos binarios en caracteres. Base64 es uno de estos tipos de codificaciones.

¿Por qué 64?
Debido a que generalmente puede confiar en los mismos 64 caracteres que están presentes en muchos conjuntos de caracteres, y puede estar razonablemente seguro de que sus datos van a terminar en el otro lado del cable sin daños.


726
2017-10-14 14:56



Básicamente es una forma de codificar datos binarios arbitrarios en texto ASCII. Toma 4 caracteres por cada 3 bytes de datos, más posiblemente un poco de relleno al final.

Esencialmente, cada 6 bits de la entrada está codificada en un alfabeto de 64 caracteres. El alfabeto "estándar" usa A-Z, a-z, 0-9 y + y /, con = como un carácter de relleno. Hay variantes seguras para URL.

Wikipedia es una fuente razonablemente buena de más información.


172
2017-10-14 14:53



La codificación Base-64 es una forma de tomar datos binarios y convertirlos en texto para que se transmita más fácilmente en cosas como el correo electrónico y los datos de formularios HTML.

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


102
2017-10-14 14:52



Es una codificación textual de datos binarios donde el texto resultante no tiene más que letras, números y los símbolos "+", "/" y "=". Es una forma conveniente de almacenar / transmitir datos binarios a través de los medios que se utilizan específicamente para datos de texto.

Pero, ¿por qué Base-64? Las dos alternativas para convertir datos binarios en texto que inmediatamente vienen a la mente son:

  1. Decimal: almacena el valor decimal de cada byte como tres números: 045 112 101 037, etc. donde cada byte se representa con 3 bytes. La información se triplica.
  2. Hexadecimal: almacena los bytes como pares hexadecimales: AC 47 0D 1A, etc. donde cada byte se representa con 2 bytes. Los datos se duplican.

Base-64 asigna 3 bytes (8 x 3 = 24 bits) en 4 caracteres que abarcan 6 bits (6 x 4 = 24 bits). El resultado se parece a "TWFuIGlzIGRpc3Rpb ...". Por lo tanto, la hinchazón es solo un mero 4/3 = 1.3333333 veces el original.


96
2017-10-14 15:02



Aparte de lo que ya se ha dicho, dos usos muy comunes que no se han enumerado son

Hashes:

Los valores hash son funciones unidireccionales que transforman un bloque de bytes en otro bloque de bytes de un tamaño fijo, como 128 bits o 256 bits (SHA / MD5). La conversión de los bytes resultantes en Base64 hace que sea mucho más fácil mostrar el hash, especialmente cuando se compara una suma de comprobación para la integridad. Los hash se ven tan a menudo en Base64 que mucha gente confunde a Base64 como un hash.

Criptografía:

Dado que una clave de encriptación no tiene que ser texto sino bytes en bruto, a veces es necesario almacenarla en un archivo o base de datos, lo que resulta útil para Base64. Lo mismo con los bytes cifrados resultantes.

Tenga en cuenta que aunque Base64 se utiliza a menudo en la criptografía no es un mecanismo de seguridad. Cualquiera puede convertir la cadena Base64 a sus bytes originales, por lo que no debe usarse como un medio para proteger datos, solo como un formato para mostrar o almacenar bytes sin formato más fácilmente.

Certificados

Los certificados x509 en formato PEM están codificados en base 64. http://how2ssl.com/articles/working_with_pem_files/ 


62
2017-08-25 03:53



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

El término Base64 se refiere a una codificación de transferencia de contenido MIME específica.   También se usa como un término genérico para cualquier esquema de codificación similar que   codifica datos binarios tratándolo numéricamente y traduciéndolo en   una representación de base 64. La elección particular de la base se debe a la   historial de codificación de conjunto de caracteres: uno puede elegir un conjunto de 64   caracteres que son ambos parte del subconjunto común a la mayoría de las codificaciones,   y también imprimible. Esta combinación deja los datos improbables   modificado en tránsito a través de sistemas, como el correo electrónico, que   tradicionalmente no es de 8 bits limpio.

Base64 se puede usar en una variedad de contextos:

  • Evolution y Thunderbird usan Base64 para ocultar contraseñas de correo electrónico [1]
  • Base64 se puede utilizar para transmitir y almacenar texto que de lo contrario podría causar una colisión de delimitador
  • Base64 se utiliza a menudo como un atajo rápido pero inseguro para ocultar secretos sin incurrir en la sobrecarga de la administración de claves criptográficas

  • Los spammers usan Base64 para eludir las herramientas básicas contra correo no deseado, que a menudo no decodifican Base64 y, por lo tanto, no pueden detectar palabras clave codificadas.   mensajes.

  • Base64 se utiliza para codificar cadenas de caracteres en archivos LDIF
  • Base64 a veces se usa para incrustar datos binarios en un archivo XML, usando una sintaxis similar a ...... ej.   Marcadores de Firefox.html.
  • Base64 también se usa cuando se comunica con dispositivos de impresión de firma fiscal del gobierno (generalmente, a través de puertos serie o paralelo) para   minimice la demora al transferir los caracteres de recibo para la firma.
  • Base64 se utiliza para codificar archivos binarios, como imágenes dentro de scripts, para evitar depender de archivos externos.
  • Se puede usar para incrustar datos de imágenes sin formato en una propiedad de CSS, como background-image.

22
2017-10-14 14:54



En los primeros días de las computadoras, cuando la comunicación entre sistemas de la línea telefónica no era particularmente confiable, se usaba un método rápido y sucio para verificar la integridad de los datos: "paridad de bits". En este método, cada byte transmitido tendría 7 bits de datos, y el 8vo sería 1 o 0, para forzar el número total de 1 bits en el byte para que sea par.

Por lo tanto, 0x01 se transmitiría como 0x81; 0x02 sería 0x82; 0x03 permanecería 0x03, etc.

Para fomentar este sistema, cuando se definió el juego de caracteres ASCII, solo se asignaron caracteres a 00-7F. (Todavía hoy, todos los caracteres establecidos en el rango 80-FF no son estándar)

Muchos enrutadores del día ponen la verificación de paridad y la traducción de bytes en el hardware, lo que obliga a las computadoras conectadas a ellos a tratar estrictamente datos de 7 bits. Esto fuerza los archivos adjuntos de correo electrónico (y todos los demás datos, por lo que los protocolos HTTP y SMTP se basan en texto), para convertirlos en un formato de solo texto.

Pocos de los enrutadores sobrevivieron hasta los 90's. Dudo mucho que alguno de ellos esté en uso hoy.


18
2017-10-14 15:09



Algunos protocolos de transporte solo permiten la transmisión de caracteres alfanuméricos. Imagínese una situación en la que los caracteres de control se utilizan para activar acciones especiales y / o que solo admite un ancho de bits limitado por carácter. Base64 transforma cualquier entrada en una codificación que solo usa caracteres alfanuméricos, +, / y el = como un personaje de relleno.


9
2017-10-14 14:53