encoding - online - ¿Para qué se utiliza la codificación base 64?
encode base64 (16)
“Los esquemas de codificación Base64 se usan comúnmente cuando existe la necesidad de codificar datos binarios que deben almacenarse y transferirse a través de medios que están diseñados para tratar datos textuales. Esto es para garantizar que los datos permanezcan intactos sin modificaciones durante el transporte ”(Wiki, 2017)
Un ejemplo podría ser el siguiente: usted tiene un servicio web que acepta solo caracteres ASCII. Desea guardar y luego transferir los datos del usuario a otra ubicación (API) pero el destinatario desea recibir datos intactos. Base64 es para eso. . . El único inconveniente es que la codificación base64 requerirá alrededor de un 33% más de espacio que las cadenas normales.
Otro ejemplo: uenc = url encoded = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http://loc.querytip.com/asics-men-s-gel-kayano-xii.html
Como puede ver, no podemos poner el carácter "/" en la URL si queremos enviar la última URL visitada como parámetro porque romperíamos la regla de atributo / valor para la "reescritura de MOD" - parámetro GET.
Un ejemplo completo sería: " http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men-s-gel-kayano-xii.html/product/93/ ”
He escuchado a gente hablar sobre "codificación base 64" aquí y allá ¿Para qué se usa esto?
Aparte de lo que ya se ha dicho, dos usos muy comunes que no se han enumerado son
Hashes:
Los hash son funciones unidireccionales que transforman un bloque de bytes en otro bloque de bytes de un tamaño fijo como 128bit o 256bit (SHA / MD5). Convertir los bytes resultantes en Base64 facilita mucho la visualización del hash, especialmente cuando se compara una suma de comprobación de integridad. Los hash se ven tan a menudo en Base64 que mucha gente confunde a Base64 con un hash.
Criptografía:
Dado que una clave de cifrado no tiene que ser texto sino bytes sin formato, a veces es necesario almacenarla en un archivo o base de datos, lo cual es muy útil para Base64. Lo mismo con los bytes encriptados resultantes.
Tenga en cuenta que aunque Base64 se utiliza a menudo en criptografía no es un mecanismo de seguridad. Cualquiera puede convertir la cadena Base64 de nuevo 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 en bruto 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/
Base64
Base64 es un término genérico para una serie de esquemas de codificación similares que codifican datos binarios al tratarlo numéricamente y traducirlo a una representación de base 64. El término Base64 se origina a partir de una codificación de transferencia de contenido MIME específica.
Los esquemas de codificación Base64 se usan comúnmente cuando existe la necesidad de codificar datos binarios que necesitan ser almacenados y transferidos a través de medios que están diseñados para tratar con datos textuales. Esto es para asegurar que los datos permanezcan intactos sin modificaciones durante el transporte. Base64 se usa comúnmente en varias aplicaciones, incluido el correo electrónico a través de MIME y el almacenamiento de datos complejos en XML.
Base64 se puede utilizar para muchos propósitos.
La razón principal es convertir los datos binarios en algo pasable.
A veces lo uso para pasar datos JSON de un sitio a otro, almacenar información en cookies sobre un usuario.
Nota: "Puede" usarlo para el cifrado. No veo por qué la gente dice que no puede, y no es un cifrado, aunque sería fácil de romper y está mal visto. Cifrado no significa nada más que convertir una cadena de datos en otra cadena de datos que puede descifrar o no más tarde, y eso es lo que hace base64.
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 ser arruinados porque el protocolo subyacente podría pensar que ha ingresado una combinación de caracteres especiales (como la forma en que FTP traduce la línea terminaciones).
Así que para solucionar 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 que los mismos 64 caracteres están presentes en muchos juegos de caracteres, y puede estar razonablemente seguro de que sus datos terminarán en el otro lado del cable no corrompido.
De Wikipedia
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 al tratarlo numéricamente y traducirlo a una representación de base 64. La elección particular de la base se debe a la historia de la codificación del conjunto de caracteres: se puede elegir un conjunto de 64 caracteres que sea parte del subconjunto común a la mayoría de las codificaciones y también imprimible. Esta combinación hace que los datos no se modifiquen en el tránsito a través de sistemas, como el correo electrónico, que tradicionalmente no estaban limpios a 8 bits.
Base64 se puede utilizar en una variedad de contextos:
- Evolution y Thunderbird usan Base64 para ofuscar contraseñas de correo electrónico [1]
- Base64 se puede usar para transmitir y almacenar texto que, de lo contrario, podría causar la colisión del delimitador
Base64 se usa 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 utilizan Base64 para evadir las herramientas básicas de antispam, que a menudo no descodifican Base64 y, por lo tanto, no pueden detectar palabras clave en mensajes codificados.
- Base64 se utiliza para codificar cadenas de caracteres en archivos LDIF
- Base64 se usa a veces para incrustar datos binarios en un archivo XML, usando una sintaxis similar a ...... por ejemplo, Firefox''s bookmarks.html.
- Base64 también se usa cuando se comunica con dispositivos de impresión de firmas fiscales del gobierno (generalmente, a través de puertos seriales o paralelos) para minimizar el retraso al transferir 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 utilizar para incrustar datos de imagen sin procesar en una propiedad CSS como la imagen de fondo.
El uso de Base64 que voy a describir aquí es un tanto hack. Así que si no te gustan los hacks, por favor no sigas.
Me metí en problemas cuando descubrí que el utf8 de MySQL no admite caracteres Unicode de 4 bytes, ya que utiliza una versión de utf8 de 3 bytes. Entonces, ¿qué hice para admitir el código Unicode completo de 4 bytes sobre el utf8 de MySQL? Bueno, la base64 codifica las cadenas cuando se almacenan en la base de datos y la base64 se decodifica cuando se recupera.
Como la codificación y decodificación de base64 es muy rápida, lo anterior funcionó perfectamente.
Tienes los siguientes puntos a tener en cuenta:
La codificación Base64 utiliza un 33% más de almacenamiento
Las cadenas almacenadas en la base de datos no serán legibles por humanos (usted podría vender eso como una característica de que las cadenas de bases de datos utilizan una forma básica de cifrado).
Podría usar el método anterior para cualquier motor de almacenamiento que no admita Unicode.
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 usó 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 octavo sería 1 o 0, para forzar que el número total de 1 bits en el byte sea par.
Por lo tanto, 0x01 sería transmitido como 0x81; 0x02 sería 0x82; 0x03 quedaría 0x03 etc.
Para mejorar este sistema, cuando se definió el conjunto 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 comprobación de paridad y la traducción de bytes en el hardware, obligando a las computadoras conectadas a ellos a tratar estrictamente con datos de 7 bits. Esto obliga a los archivos adjuntos de correo electrónico (y todos los demás datos, razón por la cual los protocolos HTTP y SMTP están basados en texto), para convertirlos en un formato de solo texto.
Pocos de los enrutadores sobrevivieron hasta los años 90. Dudo mucho que alguno de ellos esté en uso hoy.
Es básicamente una forma de codificar datos binarios arbitrarios en texto ASCII. Toma 4 caracteres por 3 bytes de datos, y potencialmente un poco de relleno al final.
Esencialmente, cada 6 bits de la entrada se codifica en un alfabeto de 64 caracteres. El alfabeto "estándar" usa AZ, az, 0-9 y + y /, con = como un carácter de relleno. Hay variantes seguras de URL.
Wikipedia es una fuente razonablemente buena de más información.
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 medios que se utilizan específicamente para datos textuales.
Pero ¿por qué Base-64? Las dos alternativas para convertir datos binarios en texto que inmediatamente vienen a la mente son:
- Decimal: almacene el valor decimal de cada byte como tres números: 045 112 101 037, etc. donde cada byte está representado por 3 bytes. Los datos se multiplican por tres.
- Hexadecimal: almacene los bytes como pares de hex: AC 47 0D 1A, etc. donde cada byte está representado por 2 bytes. Los datos se multiplican dos veces.
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 ve algo así como "TWFuIGlzIGRpc3Rpb ...". Por lo tanto, la hinchazón es solo un 4/3 = 1.3333333 veces el original.
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 correo electrónico y datos de formularios HTML.
Lo uso en un sentido práctico cuando transferimos grandes objetos binarios (imágenes) a través de servicios web. Entonces, cuando estoy probando un servicio web de C # usando un script de Python, el objeto binario se puede recrear con un poco de magia.
[En python]
import base64
imageAsBytes = base64.b64decode( dataFromWS )
Para ampliar un poco lo que Brad está diciendo: muchos mecanismos de transporte para correo electrónico y Usenet y otras formas de mover datos no están "limpios a 8 bits", lo que significa que los caracteres que se encuentran fuera del conjunto de caracteres ascii estándar pueden modificarse en tránsito, por ejemplo, 0x0D puede verse como un retorno de carro, y convertirse en un retorno de carro y avance de línea. La Base 64 mapea todos los caracteres binarios en varias letras y números ascii estándar y puntuación para que no sean destrozados de esta manera.
Principalmente, lo he visto usado para codificar datos binarios en contextos que solo pueden manejar conjuntos de caracteres ascii o simples.
Se utiliza para convertir datos binarios arbitrarios a texto ASCII.
Por ejemplo, los archivos adjuntos de correo electrónico se envían de esta manera.
Algunos protocolos de transporte solo permiten la transmisión de caracteres alfanuméricos. Imagine una situación en la que los caracteres de control se utilizan para desencadenar acciones especiales y / o que solo admiten un ancho de bit limitado por carácter. Wikipedia transforma cualquier entrada en una codificación que solo usa caracteres alfanuméricos, +
, /
y el =
como un carácter de relleno.