Pregunta ¿Está bien eliminar la nueva línea en la codificación Base64?


Mi aplicación Java usa codificación base64 que pone una nueva línea (\n) después de cada 76 caracteres. Necesito poner esta cadena codificada en un archivo de propiedades y la nueva línea rompe la funcionalidad.

Cuando hago un encodedString.replaceAll("\n", ""); Las cosas funcionan bien, pero solo quiero asegurarme de que esto se espera y no estoy presentando un problema oculto.


32
2017-11-13 11:30


origen


Respuestas:


Se ha necesitado romper una cadena codificada en base64 en varias líneas para muchos programas antiguos que no podían manejar líneas largas. Los programas escritos en Java generalmente pueden manejar largas filas ya que no necesitan hacer la administración de la memoria ellos mismos. Siempre que sus líneas tengan menos de 64 millones de caracteres, no debería haber ningún problema.

Y como no necesita las líneas nuevas, no debe generarlas, si es posible.


32
2017-11-19 07:51



Algunos de los codificadores Base64 añaden caracteres EOL como CRLF ('\ r \ n') a las cadenas codificadas. Puedes usar Base64.encodeBase64URLSafe para deshacerse de ellos:

Codifica datos binarios utilizando una variación segura de URL del algoritmo base64 pero no fragmenta la salida. La variación de seguridad en la url emite - y _ en lugar de + y / caracteres. Nota: no se agrega relleno.


5
2018-06-09 19:50



No debería ser un problema ya que muchos decodificadores pueden decodificar el texto codificado sin el delimitador de nueva línea. La opción más segura es decodificar usted mismo y verificarlo.


-3
2017-11-13 11:45