Base64是核心实用程序中的编码方式,在编码时需要填充(添加结尾的"="字符)。

6
如果我使用网站https://www.base64encode.org/ 对一个由七个字符组成的字符串进行base64编码,例如abcdefg,结果为YWJjZGVmZw==。末尾的"=="字符是填充字节,因为输入字符的数量不能被7整除。
我需要在bash中重现这个结果,所以我尝试了以下命令:
echo "abcdefg" | base64

然而,现在的结果不同了:
YWJjZGVmZwo=

我正在使用安装了base64(GNU coreutils)8.25的Ubuntu系统。
如果有人能给我一些提示,我会很高兴的。
2个回答

10

我刚刚注意到描述行为的原因是echo在末尾写入的换行符。因此,正确的命令如下,可以抑制换行符:

echo -n "abcdefg" | base64

然后输出结果与我预期的一样:
YWJjZGVmZw==

0

这里字符串如何产生意外输出也很棘手。它可能缺少空字符 \0。

$ base64 <<<"abcdefg"
YWJjZGVmZwo=
$ printf 'abcdefg' | base64
YWJjZGVmZw==

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接