Why does the base64 of a string contain "\n"?
Try:
echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64 -w 0
From man base64
:
-w
,--wrap=COLS
Wrap encoded lines afterCOLS
character (default76
). Use0
to disable line wrapping.
A likely reason for 76
being the default is that Base64 encoding was to provide a way to include binary files in e-mails and Usenet postings which was intended for humans using monitors with 80 characters width. Having a 76-character width as default made that usecase easier.
This is inferior to Kamil's answer on systems which support the -w
option to base64
, but for cases when that is not available (e.g. Alpine Linux, an Arch Linux initramfs
hook, etc.), you can manually process the output of base64:
base64 some_file.txt | tr -d \\n
This is the brute-force approach; instead of getting the program to co-operate, I am using tr
to indiscriminately strip every newline on stdout.