为什么命令行计算base64字符串不同于curl计算的base64字符串?

mr-*_*-sk 4 base64 command-line curl http basic-authentication

真的很困惑 - 猜猜它与最后的单个字符放置有关,或者可能用我不知道的基本摘要填充...?

所以,如果我执行它,你可以看到base64编码的产品:

echo 'host@mail.com:password' | openssl enc -base64
aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo=
Run Code Online (Sandbox Code Playgroud)

现在,如果我提出卷曲请求:

curl -v -u host@mail.com:password https://
aG9zdEBtYWlsLmNvbTpwYXNzd29yZA==
Run Code Online (Sandbox Code Playgroud)

你会注意到base64字符串不一样......哈哈是什么?base64命令行1实际上是不正确的 - 如果在请求中替换它,它将失败.SO - 基本消化不真正使用base64字符串吗?我注意到在字符串末尾总是做ao =而不是==

和想法?

编辑:所以,它是echo的尾随换行符:-n不输出尾随换行符

谢谢!

Ign*_*ams 7

>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64')
'host@mail.com:password'
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo='.decode('base64')
'host@mail.com:password\n'
Run Code Online (Sandbox Code Playgroud)

试试吧echo -n.