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

Why is command line computed base64 string different than curl computed base64 string?

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

所以,如果我执行这个,你可以看到base64编码的产物:

1
2
echo '[email protected]:password' | openssl enc -base64
aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo=

现在,如果我发出 curl 请求:

1
2
curl -v -u [email protected]:password https://
aG9zdEBtYWlsLmNvbTpwYXNzd29yZA==

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

还有什么想法?

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

谢谢!


1
2
3
4
5
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64')
'[email protected]:password'
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo='.decode('base64')
'[email protected]:password\
'

试试 echo -n 代替。