macOS 上的 base64 命令 returns 错误结果
base64 command on macOS returns wrong result
当调用 base64 <<< username:password
时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQK
。
在 PostMan 中使用该结果并针对 Basic Auth 端点发出请求时,我收到了 401。
在 https://www.base64encode.org 处编码 username:password
时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQ=
我可以成功地将它用于上面的 Basic Auth 端点。
如果我使用 PostMan 生成传入 username
和 password
的基本身份验证 header,它会生成与 https://www.base64encode.org 相同的 base64 编码字符串。
我还可以将 username:password
复制到 testin.txt
并使用 openssl
创建 base64 字符串:
openssl base64 -in testin.txt -out testout.txt
returns dXNlcm5hbWU6cGFzc3dvcmQK
与 base64
创建的错误结果相同。
openssl version
returns OpenSSL 0.9.8zh 14 Jan 2016
解码 dXNlcm5hbWU6cGFzc3dvcmQK
得到 username:password\n
.
所以我的猜测是,在这两种情况下,您都有意想不到的换行。 testin.txt
的情况很容易解决(修改文件,删除换行符)。
我希望 base64 的情况可以通过使用带 -n 参数的 echo 来删除换行来解决:
echo -n username:password | base64 --encode
mac 上的 BASE64 文件转换OS(当前使用 OS X 10.14.6):
编码(PDF -> BASE64):cat aaa.pdf | base64 > aaa.base64
解码(BASE64 -> PDF):cat aaa.base64 | base64 -D > aaa.pdf
我在这里使用 PDF 文件作为示例。当然你可以使用任何文件类型。
在 mac OS 10.15.6
--encode
选项不可用。
所以这在不包括 --encode 选项的情况下有效。
echo -n username:password | base64
当调用 base64 <<< username:password
时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQK
。
在 PostMan 中使用该结果并针对 Basic Auth 端点发出请求时,我收到了 401。
在 https://www.base64encode.org 处编码 username:password
时,我得到了这个结果:dXNlcm5hbWU6cGFzc3dvcmQ=
我可以成功地将它用于上面的 Basic Auth 端点。
如果我使用 PostMan 生成传入 username
和 password
的基本身份验证 header,它会生成与 https://www.base64encode.org 相同的 base64 编码字符串。
我还可以将 username:password
复制到 testin.txt
并使用 openssl
创建 base64 字符串:
openssl base64 -in testin.txt -out testout.txt
returns dXNlcm5hbWU6cGFzc3dvcmQK
与 base64
创建的错误结果相同。
openssl version
returns OpenSSL 0.9.8zh 14 Jan 2016
解码 dXNlcm5hbWU6cGFzc3dvcmQK
得到 username:password\n
.
所以我的猜测是,在这两种情况下,您都有意想不到的换行。 testin.txt
的情况很容易解决(修改文件,删除换行符)。
我希望 base64 的情况可以通过使用带 -n 参数的 echo 来删除换行来解决:
echo -n username:password | base64 --encode
mac 上的 BASE64 文件转换OS(当前使用 OS X 10.14.6):
编码(PDF -> BASE64):cat aaa.pdf | base64 > aaa.base64
解码(BASE64 -> PDF):cat aaa.base64 | base64 -D > aaa.pdf
我在这里使用 PDF 文件作为示例。当然你可以使用任何文件类型。
在 mac OS 10.15.6
--encode
选项不可用。
所以这在不包括 --encode 选项的情况下有效。
echo -n username:password | base64