问题描述 原始字符串为 mcinventoryv4er9ll1!ss,使用如下方式在命令行直接编码 echo 'mcinventoryv4er9ll1!ss' | base64 得到的结果是 bWNpbnZlbnRvcnl2NGVyOWxsMSFzcwo= 而正确的编码结果应该是 bWNpbnZlbnRvcnl2NGVyOWxsMSFzcw== 问题原因 经过尝试,可能是由于字符串末尾不可见的换行字符造成的问题。也是因为不同版本 echo 的实现造成的。 解决方法 直接在命令行编码的时候,使用 echo -n 'mcinventoryv4er9ll1!ss' | base64 即可得到正确的编码结果。 或者使用 printf 'mcinventoryv4er9ll1!ss' | base64 即可得到正确的编码结果。 另外,在这篇文章中,还提到了各种 shell 背后的引用会造成的其他问题。 因此建议使用行为更加稳定的 printf 来进行字符串的编码操作。
echo造成的base64结果错误
Posted on