A resposta é simples. Com
echo 123456789 | base64
ou
echo qwertyuiop | base64
você sempre tem uma nova linha.
Evite esse comportamento usando a opção n
para o comando echo
% echo -n qwertyuiop | base64
cXdlcnR5dWlvcA==
ou use printf
% printf qwertyuiop | base64
cXdlcnR5dWlvcA==
como você pode ver, é o mesmo resultado retornado por base64encode .
E como @AndreaCorbellini diz nos comentários
Base64 produz 4 bytes de saída para cada 3 bytes de entrada, portanto, nunca há uma correspondência de 1: 1 entre os bytes de entrada e os bytes de saída. Isso significa que uma nova linha pode acabar sendo codificada de maneiras diferentes, dependendo dos bytes que a precedem e seguem.