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

标签 http command-line curl base64 basic-authentication

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

因此,如果我执行此操作,您可以看到 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 不输出结尾的换行符

谢谢!

最佳答案

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

请尝试使用 echo -n

关于http - 为什么命令行计算的 base64 字符串与 curl 计算的 base64 字符串不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2122105/

相关文章:

amazon-web-services - 使用curl获取S3文件的MD5值

angularjs - 使用带有 Angular $http 的 curl 请求

http - 最适合 "job in progress"的 HTTP 状态代码

http - Go 是如何处理 HTTP keep-alive 的?

java - Spring GET 和 POST 映射在不同的类中

linux - 如何找到 'gtk' 不是 'permission denied' 的文件

ruby-on-rails - 运行 Linux 命令 "from" 'RAILS_ROOT/config/environments/production.rb' 文件

bash - 为什么对 REST 服务的 bash/CURL 调用会给出与参数不一致的结果?

http - 在 onModuleLoad 中完成的请求根本不会被缓存。主要在 FireFox 中

mysql sql 文件导入转储(带撇号)