致电base64 <<< username:password
时,我会收到以下结果:dXNlcm5hbWU6cGFzc3dvcmQK
。
在PostMan中使用该结果并针对Basic Auth端点发出请求时,我会返回401.
在https://www.base64encode.org对username:password
进行编码时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQ=
我可以成功地将其用于上面的基本Auth端点。
如果我使用PostMan生成传入username
和password
的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
答案 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