macOS上的base64命令返回错误结果

Ale*_*ler 5 base64 openssl macos-sierra

致电时base64 <<< username:password得到以下结果:dXNlcm5hbWU6cGFzc3dvcmQK

在PostMan中使用该结果并针对Basic Auth端点发出请求时,我得到了401。

username:passwordhttps://www.base64encode.org进行编码时,我得到了以下结果:dXNlcm5hbWU6cGFzc3dvcmQ=并且可以从上面针对Basic Auth端点成功使用它。

如果我使用PostMan生成传入username和的Basic Auth标头password,则它会生成与https://www.base64encode.org相同的base64编码的字符串。我也可以复制username:passwordtestin.txt和使用openssl创造的base64字符串:

openssl base64 -in testin.txt -out testout.txt返回dXNlcm5hbWU6cGFzc3dvcmQKbase64创建相同的错误结果。

openssl version 退货 OpenSSL 0.9.8zh 14 Jan 2016

Joe*_*eau 7

解码dXNlcm5hbWU6cGFzc3dvcmQK给出username:password\n

所以我的猜测是,在两种情况下,您都有意料之外的换行符。这种testin.txt情况很容易解决(修改文件,删除换行)。

我希望可以通过将echo与-n参数一起使用以消除换行符来解决base64的情况:

echo -n username:password | base64 --encode
Run Code Online (Sandbox Code Playgroud)

  • 除非您使用-n,否则`echo`加一个。我假设原始的`base64`是从用户按下`enter`来获取的,但是我不知道这是正确的。 (2认同)