¿Qué esquema de codificación de texto utiliza cuando tiene datos binarios que necesita enviar a través de un canal ascii?

StackOverflow https://stackoverflow.com/questions/2090009

  •  21-09-2019
  •  | 
  •  

Pregunta

Si tiene datos binarios que necesita codificar, ¿qué esquema de codificación utiliza?

Se acerca de:

  • Codificación hexadecimal.Muy simple, pero bastante detallado, expande un byte a dos.
  • Base 64.Lo más común, no tan detallado, expande de tres bytes a cuatro.
  • base 85.No es común, nuevamente es menos detallado, expande de cuatro bytes a cinco.

¿Existen otros esquemas de codificación de uso común?Si es así, ¿cuáles son las ventajas y desventajas?

Editar:Esto es útil, por ejemplo, cuando se intenta almacenar datos arbitrarios en una cookie.Las cookies solo pueden almacenar texto, no datos arbitrarios, por lo que es necesario convertirlos de alguna manera, preferiblemente con una forma de volver a convertirlos.Además, suponga que está utilizando un servidor sin estado, por lo que no puede guardar el estado en el servidor y simplemente colocar un identificador en la cookie.Por supuesto, si hace esto, también necesitará alguna forma de verificar que lo que el usuario le está pasando es lo que usted le pasó, por ejemplo, una firma.

Además, dado que el consenso actual es que se debe utilizar base64 ya que está muy extendido, también señalaré que esto es lo que uso...Sólo tengo curiosidad por saber si alguien usó algo más y, de ser así, por qué.

Editar:En caso de que alguien se tope con esto, si desea utilizar Base64 para almacenar datos en una cookie, debe utilizar una implementación Base64 modificada.Ver esta respuesta por la razón.

¿Fue útil?

Solución

Para codificar los valores de cookie, es necesario tener cuidado. Ver este mayor respuesta :

  

Con la versión 0 cookies, valores deben   no contiene espacio en blanco, soportes,   paréntesis, signos de igual , comas,   comillas dobles, barras, pregunta   marcas, en las señales, dos puntos, y   punto y coma. valores vacíos no pueden   se comportan de la misma manera en todos los navegadores.

Base64 codificación puede generar símbolos = para ciertas entradas, y esto técnicamente no está permitido en cookies (versión 0 galletas, de todos modos, que son los más ampliamente soportado). En la práctica, sospecho que el = realmente funciona bien, pero tal vez no.

Yo sugeriría que estar absolutamente seguro de que su binario codificado es compatible galletas, a continuación, codificación básica hexagonal es más seguro (por ejemplo, en java ).

editar: Como @ Pablo amablemente señaló, hay un versión modificada de base 64 que es "URL segura"(y, supongo, "cookie segura"). Usando una versión modificada de un algoritmo estándar en lugar diluye su encanto, le importaba.

editar : @shoosh señaló que el = sólo se utiliza para denotar el final de la cadena base 64, por lo que podría recortar la =, establece la cookie, a continuación, vuelva a colocar la = de nuevo cuando se necesita decodificarlo.

Otros consejos

Base64 gana porque es tan común que no tiene que preocuparse nunca de rodar mi propio codificador / decodificador. No he corrido en cualquier aplicación en la que he estado preocupado por el ahorro de ancho de banda o espacio de archivos de datos binarios codificados.

Había una vez, no había UTF-7. Está oficialmente obsoleta, pero todavía funciona como un ACE (codificación compatible ASCII). Ahora hay IDN .

Base 64 es el estándar de facto. Uso de cualquier otra cosa es buscar problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top