为什么命令行计算的base64字符串和curl计算的不一样?

5

非常困惑-猜测是由于在结尾处放置了单个字符或者可能使用了我不知道的基本摘要填充..?

因此,如果我执行此操作,则可以查看Base64编码的结果:

echo 'host@mail.com:password' | openssl enc -base64
aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo=

现在,如果我发送一个curl请求:
curl -v -u host@mail.com:password https://
aG9zdEBtYWlsLmNvbTpwYXNzd29yZA==

您会注意到base64字符串是不同的..哈哈,怎么回事?命令行中的base64实际上是不正确的——如果您在请求中替换它,则会失败。因此,基本摘要是否真正使用base64字符串?我注意到它总是在字符串末尾执行o=而不是==...有什么想法?
编辑:所以,这是来自echo的尾随换行符:        -n 不输出尾随换行符
谢谢!
1个回答

8
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64')
'host@mail.com:password'
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo='.decode('base64')
'host@mail.com:password\n'

尝试使用echo -n代替。


echo -n "host@mail.com:password" | openssl enc -base64看起来好像不起作用。 - mr-sk
'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64') \ 'host@mail.com:password' ... 看起来没问题... - Ignacio Vazquez-Abrams
抱歉,我在将其与实际的用户名和密码进行比较。哈哈,非常好用,谢谢! - mr-sk

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