¿Qué es la codificación base 64 para que sirve?

He escuchado a la gente hablar acerca de «codificación base 64» de aquí y de allá. ¿Para qué se utiliza?

  • Desde el manual de base64_encode(): «Esta codificación está diseñado para hacer que los datos binarios sobrevivir transporte a través de las capas de transporte que no son de 8 bits, tales como correo de los cuerpos.»
InformationsquelleAutor MrDatabase | 2008-10-14

17 Kommentare

  1. 856

    Cuando usted tiene algunos datos binarios que desea enviar a través de una red, por lo general no basta con transmisión de los bits y bytes a través de la red en un formato raw. Por qué? debido a que algunos de los medios para la transmisión de texto. Nunca se sabe, algunos protocolos pueden interpretar los datos binarios como caracteres de control (como un módem), o los datos binarios podría ser jodido, porque el protocolo subyacente podría pensar que usted ha entrado en una especial combinación de caracteres (como FTP se traduce finales de línea).

    Así que para conseguir todo esto, la gente codificar los datos binarios en los personajes. Base64 es uno de estos tipos de codificaciones.

    64 ¿por qué?

    Debido a que generalmente se puede confiar en el mismo 64 caracteres están presentes en muchos de los conjuntos de caracteres y puede estar razonablemente seguro de que los datos que va a terminar en el otro lado del cable no está dañado.

    • (En teoría, usted podría hacer la base de los 80 codificación o algo similar, sino que sería mucho más difícil. Potencias de dos son bases naturales binario.)
    • No hay ninguna garantía, son solo personajes que son casi siempre seguro. Esta es la razón por la que existen múltiples formas de Base-64 (en.wikipedia.org/wiki/Base-64).
    • la variante que hace el navegador que uso cuando me pongo en Base64 en una etiqueta de imagen?
    • href=»http://stackoverflow.com/questions/1207190/embedding-base64-images» title=»incorporación de imágenes en base64″>stackoverflow.com/questions/1207190/embedding-base64-images
    • Esa es la mejor discusión del tema veo; no hay una respuesta absoluta, sino que es donde me gustaría ir a preguntar.
    • Eso no significa que todo tipo de red de transferencia de datos debe utilizar algún tipo de codificación?
    • Pero, ¿por qué es base64 método utilizado para codificar los datos de la cadena? por ejemplo, en javascript atob función Es no significa que el servidor para codificar un archivo json a formato base64? Caracteres especiales podría ser un caso de uso pero ¿por qué no utf8 en ese caso, son equibalent? Cualquier otro recurso con respecto a que sería muy apreciado gracias.
    • Supuse base 64 se refiere al número de sistema más que el recuento de caracteres en el conjunto. No?
    • Base64 se refiere al número de caracteres que se utiliza para la codificación. En teoría, usted podría representar un número único de esta manera el uso de estos 64 caracteres como base-64 número en lugar de los 10 personajes que utilizamos normalmente para representar en base 10 del número.
    • De niza. Gracias por aclarar que hasta para mí. Me gustaría parafrasear como «el uso de un subconjunto de estos 64 caracteres…»
    • No estoy seguro de que usted está recibiendo el «subconjunto» de la idea de. El término «base 64» no se refieren al número de sistema. Ordinario decimal (de base 10), tenemos 10 distintos símbolos. En hexadecimal (base 16), tenemos 16 distintos símbolos. En binario, tenemos 2 diferentes símbolos. Así, en base-64, hemos 64 distintos símbolos. Por lo tanto, realmente es sólo el número de sistema, exactamente de la misma manera como los otros sistemas de numeración. Ahora, QUE de 64 símbolos a utilizar es un asunto totalmente diferente, y en algunos casos, es necesario utilizar un conjunto diferente de 64 símbolos que en otros casos.
    • Y: Sí, yo soy una especie de difusa en sistemas de números, así que mi comentario posiblemente no tenían sentido. Creo que me fue a recoger una nit acerca de un número casi siempre representado por algo menos que el del conjunto de dígitos en el número de sistema. E. g., 2334 que consiste en el subconjunto (2, 3, 4). LOL.
    • Base-85 se utiliza en algunos sistemas ya que se puede codificar de 32 bits trozos directamente como cinco personajes. Esto no sólo es más compacto que el de base-64, pero mantiene la de 32 bits trozos juntos. Por el contrario, base-64 requiere que los datos que se origina como de 32 bits trozos ser dividida en grupos de cuatro bytes. y luego agarró en grupos de 3 bytes.
    • Una lista de al menos algunos de los protocolos que no sería bueno haber si alguien sabe.
    • ¿Tiene sentido base-64 codificar un formato ASCII de 7 bits de archivo de texto?

  2. 193

    Es básicamente una forma de codificar datos binarios arbitrarios en texto ASCII. Toma de 4 caracteres por 3 bytes de datos, además de potencialmente un poco de relleno en el extremo.

    Esencialmente cada uno de los 6 bits de la entrada está codificado en un alfabeto de 64 caracteres. El «estándar» utiliza el alfabeto a-Z, a-z, 0-9 y + y /, con = como relleno de caracteres. Hay URL-seguro variantes.

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

    • En un langange como php, se va a binario los datos provienen de. Casi siempre trabajamos con datos de cadena de texto.
    • Los resultados de cifrado o compresión, o el sonido/imágenes/video.
    • ¿qué acerca del almacenamiento, php no parece tener tipos de datos binarios
    • Me temo que no tengo idea de lo que significa «¿qué acerca del almacenamiento», pero en este punto creo que estamos un poco off-topic.
    • Seguro que somos. Supongo que lo que quería era «string binario», que efectivamente era todavía de datos binarios como mucho representación interna se refiere. gracias por su tiempo.
    • Me gustaría fuertemente evitar pensar en términos de «cadena binaria». Datos binarios deben ser tratados como datos binarios, y no se trata como texto. He visto literalmente cientos – quizá miles – de preguntas sobre LO que básicamente se reducen a las personas que no toman suficiente atención a lo largo de esta distinción.
    • usted acaba de trabajar con él, como una cadena y está muy bien. No sé si hay trampas para mirar hacia fuera para, como resultado de trabajar con una cadena de texto, pero sé de PHP normalmente tira en datos binarios como una cadena y se lo pasa como una cadena. Por ejemplo, usted puede leer desde un archivo binario y guardar los datos en otra ruta, y todo debería funcionar como lo que yo sé.
    • PHP llama binary strings. (fuente)php.net/manual/en/function.pack.php
    • En última instancia, no son sólo las cadenas que pasan a ser conocido por el programador para contener datos binarios. En la firma del método de la información proporcionada para que el pack de la función que vincula a, se dice que devuelve una «cadena», no una «cadena binaria». Creo pack() y unpack() sólo son necesarios si usted necesita para analizar o modificar los datos binarios.

  3. 111

    Es un texto de codificación de datos binarios, donde el texto resultante no tiene nada, pero las letras, los números y los símbolos «+», «/» y «=». Es una forma conveniente para almacenar y transmitir datos binarios sobre los medios de comunicación que se utiliza específicamente para datos de texto.

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

    1. Decimal: almacenar el valor decimal de cada octeto como tres números: 045 112 101 037 etc. donde cada byte se representa por 3 bytes. Los datos hincha tres veces.
    2. Hexadecimal: almacenar los bytes hexadecimales pares: AC 47 0D 1A etc. donde cada byte se representa por 2 bytes. El hincha de datos dos veces.

    Base-64 mapas 3 bytes (8 x 3 = 24 bits) de 4 caracteres que se extienden de 6 bits (6 x 4 = 24 bits). El resultado se ve algo como «TWFuIGlzIGRpc3Rpb…». Por lo tanto, la distensión abdominal es sólo un mero 4/3 = 1.3333333 veces el original.

    • No he entendido bien, que 64 es la mejor opción ya que es la mayor potencia de dos que es convertible en caracteres ASCII imprimibles (hay 95 de ellos)?
    • Sí, eso es correcto!
    • Si en ambos casos se trata de 24 bits, entonces no es la distensión 1:1? O Cuando dices 4 personajes que abarcan de 6 bits, ¿quiere usted decir que hay 8 bits por char, pero los dos primeros son acolchado 0s?
    • Cada uno de los 6 bits se expresa en 8 bits. Así que la hinchazón es a las 8:6, o 4:3.
  4. 76

    Aparte de lo que ya se ha dicho, dos aplicaciones muy comunes que no han sido mencionados son

    Los hash:

    Hash de una vía de funciones que transformar un bloque de bytes en otro bloque de bytes de 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 para mostrar el hash, especialmente cuando usted está comparando una suma de comprobación de integridad. Los valores hash son tan a menudo visto en Base64 que muchas personas confunden Base64 a sí mismo como un hash.

    Criptografía:

    Desde una clave de cifrado no tiene que ser un texto, pero cruda bytes a veces es necesario guardarlo en un archivo o base de datos, que Base64 viene muy bien para. Mismo con el resultado de cifrado bytes.

    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 volver a su estado original bytes, por lo que no debería ser utilizado como un medio de protección de datos, sólo como un formato para visualizar o almacenar crudo bytes más fácilmente.

    Certificados

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

    • Es realmente sencillo, processingwise, para almacenar los bytes bytes en un montón de casos. Incluso en una base de datos, y especial en un archivo (si los registros de longitud fija se utilizan, o los bytes son el único contenido). Base64 se utiliza normalmente cuando los bytes están destinados a ser transmitida en algún lugar, especialmente a lo largo de un canal que podría lop de bits o interpretar algunos de los bytes de códigos de control.
    • Nunca he visto a un hash escrito como sin signo de 8 bits enteros, 0,1,255,36…y mostrar que con UTF-8 o cualquier otra codificación no tendría sentido, ¿cómo más se puede mostrar lo que no sea con base64? Las claves de encriptación y cifrado de datos se suelen almacenar en la configuración y los archivos XML donde se puede almacenar el crudo bytes. Estoy de acuerdo si se pueden almacenar en crudo bytes, a continuación, por todos los medios, pero base64 es para aquellas situaciones en las que no se puede. Hay muchos usos de base64 más allá de la transmisión. Estos son simplemente dos escenarios comunes donde se le vea.
    • Te gustaría mostrar el hash como hex, no decimal. Para hash, que es de hecho mucho más común de lo que base64.
    • Sí, esto también es común. Dígitos hexadecimales pueden representar datos binarios, pero en base 64 tiene la ventaja de ocupar mucho menos espacio, ya que se utiliza más caracteres.
  5. 25

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

    El término Base64 se refiere a un contenido MIME de codificación de transferencia.
    También se utiliza como un término genérico para cualquier similar esquema de codificación que
    codifica los datos binarios por medio de un tratamiento de forma numérica y la traducción en
    una base 64 de la representación. La elección de la base es debido a la
    historia de la codificación del juego de caracteres: uno puede elegir un conjunto de 64
    los personajes que es a la vez parte del subconjunto común a la mayoría de las codificaciones,
    y también se pueden imprimir. Esta combinación provoca que los datos raro ser
    modificado en tránsito a través de los sistemas, tales como el correo electrónico, los cuales fueron
    tradicionalmente no 8-bits.

    Base64 puede ser utilizado en una variedad de contextos:

    • Evolution y Thunderbird uso Base64 para ocultar las contraseñas de correo electrónico[1]
    • Base64 puede ser usado para transmitir y almacenar el texto que de lo contrario podría causar delimitador de colisión
    • Base64 se utiliza a menudo como un rápido pero inseguro de acceso directo a los oscuros secretos, sin incurrir en los gastos generales de la clave criptográfica de gestión de

    • Los Spammers utilizan Base64 para evadir básicos anti-spamming de herramientas, que a menudo no decodificación Base64 y por lo tanto no puede detectar palabras clave en codificados
      mensajes.

    • Base64 se utiliza para codificar las cadenas de caracteres en archivos LDIF
    • Base64 se utilizan a veces para incrustar datos binarios en un archivo XML, usando una sintaxis similar a la de …… por ejemplo,
      Firefox bookmarks.html.
    • Base64 también se utiliza en la comunicación con los Fiscales del gobierno de la Firma de dispositivos de impresión (generalmente, a través de puerto serie o puerto paralelo) a
      minimizar el retraso de la hora de transferir recibo de caracteres para la firma.
    • Base64 se utiliza para codificar los archivos binarios como imágenes dentro de los scripts, para evitar depender de archivos externos.
    • Se puede utilizar para incrustar datos de imagen raw en una propiedad CSS como imagen de fondo.
  6. 24

    En los primeros días de las computadoras, cuando la línea telefónica entre el sistema de comunicación no fue particularmente fiable, rápido & sucio método de verificación de la integridad de los datos se utilizó: «bit de paridad». En este método, cada byte transmitido tendría 7-bits de datos, y el 8 a 1 o 0 para forzar que el número total de bits 1 en el byte a ser incluso.

    Por lo tanto 0x01 sería trasmitida como 0x81; 0x02 sería 0x82; 0x03 quedaría 0x03 etc.

    A este sistema, cuando el conjunto de caracteres ASCII fue definido, solamente 00-7F fueron asignados a los personajes. (Todavía hoy en día, todos los caracteres que se establece en el rango de 80-FF no son estándar)

    Muchos routers del día poner la comprobación de paridad y el byte de traducción en hardware, obligando a los equipos conectados a ellos para tratar estrictamente con los datos de 7 bits. Esta fuerza de adjuntos de correo electrónico (y todos los otros datos, que es la razón por HTTP & protocolos SMTP están basados en texto), que se convertir en un formato de sólo texto.

    Algunos de los routers sobrevivido en la década de los 90. Yo severamente duda alguna de ellas está en uso hoy en día.

    • Este es un excelente punto de discusión y una interesante lección de historia, gracias.
  7. 11

    Algunos protocolos de transporte sólo se permiten caracteres alfanuméricos para ser transmitidos. Imagínese una situación en la que los caracteres de control se utilizan para desencadenar acciones especiales y/o que sólo admite un limitado número de bits por carácter. Base64 transforma cualquier entrada en un sistema de codificación que utiliza sólo caracteres alfanuméricos, +, / y la = como un relleno de caracteres.

  8. 8

    El uso de Base64 voy a describir aquí es algo un hack. Así que si no te gustan los hacks, por favor no se vaya.

    Fui en problemas cuando descubrí que MySQL utf8 no es compatible con 4 bytes de caracteres unicode, ya que utiliza un 3 bytes versión de utf8. Así que lo que hice para soporte completo de unicode de 4 bytes más de MySQL utf8? Así, en base64 codifican las cadenas cuando se almacena en la base de datos y decodificación de base64 momento de la recuperación.

    Desde base64 de codificación y decodificación, es muy rápido, lo anterior funcionó a la perfección.

    Usted tiene los siguientes puntos a tomar nota de:

    • La codificación Base64 utiliza un 33% más de almacenamiento

    • Cadenas almacenadas en la base de datos no será legible por humanos (Usted podría vender que como una característica que la base de datos de cadenas de utilizar una forma básica de cifrado).

    Usted podría utilizar el método anterior para cualquier motor de almacenamiento que no es compatible con unicode.

    • «Usted podría vender que como una característica que la base de datos de cadenas de utilizar una forma básica de cifrado» me gusta tu estilo 😀
    • «Usted podría vender que como una característica que la base de datos de cadenas de utilizar una forma básica de cifrado» qué horrible cosa que decir 😀
    • forma básica de cifrado en contra de alguien que no tiene la decodificación de base64 algoritmo rofl 😀
    • No, en absoluto un «horrible cosa que decir». Segundo grado sensible de los datos está bien ser codificado en base64 para hacerla ilegible por db administradores. No siempre es necesario tener el más alto nivel de encriptación para cada pieza de datos. Por ejemplo, si desea ocultar los «comentarios» de una base de datos de administrador, luego base64 es adecuado para el trabajo. Gratcias!
    • Vale la pena mencionar que MySQL hace que ahora tiene soporte para todos los de Unicode, aunque para fines de compatibilidad hacia atrás, sus utf8 tipo todavía tres bytes; si usted quiere la cosa real, el uso de utf8mb4. Buen hack, pero no es necesario.
    • desde MySQL 5.6.1 SELECT FROM_BASE64('YmFzZTY0IGVuY29kZWQgc3RyaW5n'); crear una tabla temporal o un punto de vista y puede leer los «cifrado» comentarios =P

  9. 7

    Es utilizado para la conversión de datos binarios arbitrarios de texto ASCII.

    Por ejemplo, archivos adjuntos de correo electrónico se envían de esta manera.

  10. 7

    Yo lo uso en un sentido práctico cuando la transferencia de grandes objetos binarios (imágenes) a través de servicios web. Así que cuando yo estoy probando con C# servicio web mediante una secuencia de comandos de python, el objeto binario puede ser recreado con un poco de magia.

    [Python]

    import base64
    imageAsBytes = base64.b64decode( dataFromWS )
    
    • ¿Los datos que viaja más rápido?
  11. 7

    Años atrás, cuando postal funcionalidad se introdujo, por lo que era totalmente basado en texto, como pasó el tiempo, necesario para que los archivos adjuntos como imágenes y medios (audio,video, etc) vino a la existencia. Cuando estos datos adjuntos se envían a través de internet (que es, básicamente, en la forma de datos binarios), la probabilidad de que los datos binarios corruptos es alta en su forma cruda. Así que, para hacer frente a este problema BASE64 llegó.

    El problema con datos binarios que contiene caracteres null que en algunos lenguajes,como C, C++ representan el final de la cadena de caracteres para el envío de datos binarios en forma cruda contiene bytes NULOS va a dejar un archivo de ser leído completamente y plomo en un corromper los datos.

    Por Ejemplo :

    En C y C++, este «null» personaje muestra el final de una cadena. Así que «HOLA» se almacena como este:

    H E L L O

    72 69 76 76 79 00

    Las 00 dice: «deje aquí».

    Ahora pasemos a cómo la codificación BASE64 obras.

    Punto a destacar : la Longitud de la cadena debe ser múltiplo de 3.

    Ejemplo 1 :

    Cadena ser codificado : «ace», Longitud=3

    1) Convertir cada carácter decimal.

    a= 97, c= 99, e= 101

    ¿Qué es la codificación base 64 para que sirve?

    2) Cambiar cada uno de decimal a binario de 8 bits de la representación.

    97= 01100001, 99= 01100011, 101= 01100101

    Combinado : 01100001 01100011 01100101

    3) Separar en un grupo de 6 bits.

    011000 010110 001101 100101

    4) Calcular binario a decimal

    011000= 24, 010110= 22, 001101= 13, 100101= 37

    5) Encubiertas decimal personajes a base64 codificado en base64 gráfico.

    24= Y, 22= W, 13= N, 37= l

    «ace» => «YWNl»

    ¿Qué es la codificación base 64 para que sirve?

    Ejemplo 2 :

    Cadena ser codificado : «abcd» Longitud=4, no es múltiplo de 3. Entonces, para hacer que la longitud de la cadena múltiplo de 3 , debemos agregar 2 bits de relleno para hacer de longitud= 6. Relleno de bit es representado por el signo»=».

    Punto a destacar : Un relleno de bits es igual a dos ceros 00 por lo que dos de relleno de bits es igual a cuatro ceros 0000.

    Así que vamos a empezar el proceso :–

    1) Convertir cada carácter decimal.

    a= 97, b= 98, c= 99, d= 100

    2) Cambiar cada uno de decimal a binario de 8 bits de la representación.

    97= 01100001, 98= 01100010, 99= 01100011, 100= 01100100

    3) por Separado en un grupo de 6 bits.

    011000, 010110, 001001, 100011, 011001, 00

    por lo que el último de 6 bits no es completa, de modo que insertar dos relleno de bits que es igual a cuatro ceros «0000».

    011000, 010110, 001001, 100011, 011001, 000000 ==

    Ahora, es igual. Dos es igual signo al final muestran que 4 ceros se han añadido (ayuda en la decodificación).

    4) Calcular binario a decimal.

    011000= 24, 010110= 22, 001001= 9, 100011= 35, 011001= 25, 000000=0 ==

    5) Encubiertas decimal personajes a base64 codificado en base64 gráfico.

    24= Y, 22= W, 9= j, 35= j, 25= Z, 0= A ==

    «abcd» => «YWJjZA==»

  12. 5

    «Base64 esquemas de codificación se utiliza comúnmente cuando hay una necesidad de codificar datos binarios que necesita ser almacenada y transferida a través de los medios de comunicación que están diseñados para tratar con datos textuales. Esto es para asegurar que los datos permanecen intactos sin modificación durante el transporte»(Wiki, 2017)

    Ejemplo podría ser el siguiente: tiene un servicio web que aceptan sólo caracteres ASCII. Desea guardar y, a continuación, la transferencia de datos del usuario a alguna otra ubicación (API) pero destinatario desea recibir virgen de datos. Base64 es para eso. . . El único inconveniente es que la codificación base64 se requieren alrededor de un 33% más de espacio que las cadenas.

    Otro Ejemplo:: uenc = codificación url = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tzw4tcy1nzwwta2f5yw5vlxhpas5odg1s = http://loc.querytip.com/asics-men-s-gel-kayano-xii.html.

    Como se puede ver no podemos poner char «/» en la URL, si queremos enviar la última vez que visitó la URL como parámetro porque le iba a romper el atributo/valor de la regla de «MOD rewrite» – 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/«

  13. 4

    Sobre todo, he visto que se usa para codificar datos binarios en contextos que sólo puede manejar ascii o un simple – conjuntos de caracteres.

  14. 3

    Para ampliar un poco sobre lo que Brad está diciendo: muchos de los mecanismos de transporte para el correo electrónico y Usenet y otras formas de mover los datos no son «8 bits», lo que significa que los personajes fuera de la norma de conjunto de caracteres ascii pueden ser alterados en el tránsito – por ejemplo, 0x0D podría ser visto como un retorno de carro, y se convirtió en un retorno de carro y avance de línea. En Base 64 todos los mapas de caracteres binarios en varias estándar ascii de las letras y los números y signos de puntuación para no ser destrozado de esta manera.

  15. 2

    Base64

    Base64 es un término genérico para una serie de similares esquemas de codificación que codificar datos binarios por medio de un tratamiento de forma numérica y se traducen en una base 64 de la representación. El Base64 término se origina a partir de un determinado contenido MIME de codificación de transferencia.

    Base64 esquemas de codificación se utiliza comúnmente cuando hay una necesidad de codificar datos binarios que necesita ser almacenada y transferida a través de los medios de comunicación que están diseñados para tratar con datos textuales. Esto es para asegurar que los datos permanecen intactos sin modificación durante el transporte. Base64 es usado comúnmente en un número de aplicaciones, incluyendo el correo electrónico a través de la mímica, y el almacenamiento de datos complejos en XML.

  16. 0

    Base64 puede ser usado para muchos propósitos.

    La razón principal es para convertir los datos binarios a algo pasable.

    Yo a veces lo uso para pasar los datos JSON alrededor de un sitio a otro, almacenar información
    en las cookies de un usuario.

    Nota:
    Se «puede» se usa para el cifrado – no veo por qué la gente dice que no puedes, y que no cifrado, aunque sería fácilmente rompibles y está mal visto. El cifrado no significa nada más que la conversión de una cadena de datos a otra serie de datos que pueden ser más tarde descifrar o no, y eso es lo que base64 hace.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea