在 CentOS 7 上 base64 编码二进制文件的正确方法是什么?

Dav*_*ave 7 character-encoding centos base64 binary

我正在使用带有 bash shell 的 CentOS 7。我认为对二进制文件进行 base64 编码会很简单

[rails@server lib]$ cat mybinary.file | base64 > /tmp/output.base64
Run Code Online (Sandbox Code Playgroud)

但是,当我查看文件长度时,我注意到它不是四的倍数

[rails@server lib]$ ls -al /tmp/output.base64 
-rw-rw-r-- 1 rails rails 92935 May 31 15:50 /tmp/output.base64
Run Code Online (Sandbox Code Playgroud)

我不知道我所做的是否有效,但是当我尝试使用 JS 库解码文件时,我收到一个错误,抱怨字符串长度不是四的倍数,所以我想知道我上面所做的是否正确,或者是否有其他方法可以做到。

ilk*_*chu 8

$ echo foo |base64 
Zm9vCg==
$ echo foo |base64 |wc -c
9
Run Code Online (Sandbox Code Playgroud)

注意输出中的尾随换行符base64,它是这里的第九个字符。

对于更长的输入,它会产生不止一行,因为它默认每 76 个字符包装一次输出。您可以使用 禁用换行(包括最后的换行符)base64 -w0,或者通过管道输出tr -d '\n'