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

时间:2016-12-16 17:33:00

标签: openssl base64 macos-sierra

致电base64 <<< username:password时,我会收到以下结果:dXNlcm5hbWU6cGFzc3dvcmQK

在PostMan中使用该结果并针对Basic Auth端点发出请求时,我会返回401.

https://www.base64encode.orgusername:password进行编码时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQ=我可以成功地将其用于上面的基本Auth端点。

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

openssl base64 -in testin.txt -out testout.txt会返回dXNlcm5hbWU6cGFzc3dvcmQK,这与base64创建的错误结果相同。

openssl version返回OpenSSL 0.9.8zh 14 Jan 2016

3 个答案:

答案 0 :(得分:5)

解码dXNlcm5hbWU6cGFzc3dvcmQK会产生username:password\n

所以我的猜测是,在这两种情况下,你都有一个你没想到的换行符。 testin.txt案例很容易解决(修改文件,删除换行符)。

我希望通过使用带有-n参数的echo来移除换行符来解决base64案例:

echo -n username:password | base64 --encode

答案 1 :(得分:0)

在macOS(当前使用OS X 10.14.6)上进行BASE64文件转换:

编码(PDF-> BASE64):cat aaa.pdf | base64> aaa.base64

解码(BASE64-> PDF):cat aaa.base64 | base64 -D> aaa.pdf

我在这里使用PDF文件作为示例。当然,您可以使用任何文件类型。

答案 2 :(得分:0)

在Mac OS 10.15.6上

--encode选项不可用。 因此,此方法无需包含--encode选项。

echo -n username:password | base64