$ 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?
55
¿Está seguro de que la salida contiene una nueva línea, y no es solo el ajuste de su ventana? Ese comando funcionó bien para mí en Mac. ¿Qué sistema operativo estás usando?
—
Ian
RFC 2045, que definió Base64, REQUIERE una nueva línea después de 76 caracteres (máx.). ¿Qué te hace pensar que tu ejemplo no es el correcto?
—
MSalters
@MSalters RFC 4648 aborda específicamente ese problema. Las implementaciones NO DEBEN agregar saltos de línea a los datos codificados en base a menos que la especificación que hace referencia a este documento indique explícitamente que los codificadores base agreguen saltos de línea después de un número específico de caracteres. => esta implementación es incorrecta de acuerdo con RFC 4648, siempre y cuando pretenda producir una salida codificada en base64 'sin formato'. Más interesante aún, las páginas de manual de GNU base64 (¿en cuestión?) Se refieren específicamente a RFC 3548, que también especifica que no hay ajuste por defecto, y que RFC 4648 está obsoleto.
—
Bob
@Bob: los RFC tienen un poco menos de respeto por la estabilidad de la API; una herramienta base64 no puede simplemente cambiar su formato de salida sin romper los scripts.
—
MSalters
@MSalters No puedo estar seguro de que no exista una versión anterior, pero GNU base64 se escribió en 2004 y AFAICT siempre afirmó seguir RFC 3548. RFC 3548 contiene la misma cláusula "NO DEBE agregar saltos de línea". Entonces, incluso la implementación original fue "incorrecta". Como mínimo, su implementación no coincide con su documentación. De todos modos, usted preguntó por qué el ejemplo de OP es correcto y hizo referencia a un RFC; mi respuesta es el RFC correcto que realmente define base64 de forma aislada. Si su respuesta es "por razones históricas", que así sea, pero OP no está mal aquí.
—
Bob