$ echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64
YXBmanhraWMtb215dW9id2QzMzk4MDVhazo2MGEwNmNkMmRkZmFkNjEwYjk0OTBkMzU5ZDYwNTQw
Nw==
La salida tiene un retorno antes Nw==
. ¿Cuál es la forma correcta de generar base64 en Linux?
Respuestas:
Tratar:
De
man base64
:fuente
tr
. Es bueno saber que hay una "forma correcta".base64
codifica datos binarios arbitrarios como texto. Las herramientas que esperan texto generalmente leen una línea a la vez y es posible que no manejen bien las líneas muy largas . Si-w 0
fuera el predeterminado, obtendría por defecto solo una línea de texto; una línea enormemente larga si la entrada era grande. Es mejor envolver por defecto. Creo que76
fue elegido porque es poco menos de lo80
que es una especie de estándar de facto para terminales .base64
comando necesitaba pasar el-w 0
(y cuando lo olvidé, pueden suceder cosas extrañas ...), por lo que este comportamiento predeterminado fue muy extraño para mí.Esto es inferior a la respuesta de Kamil en sistemas que admiten la
-w
opciónbase64
, pero para los casos en que no está disponible (por ejemplo, Alpine Linux, uninitramfs
gancho Arch Linux , etc.), puede procesar manualmente la salida de base64:Este es el enfoque de fuerza bruta; en lugar de lograr que el programa coopere, estoy usando
tr
para eliminar indiscriminadamente cada línea nueva en stdout.fuente