Windows与Debian系统中OpenSSL Base64编码结果差异原因及正确性确认
Windows与Debian下OpenSSL Base64编码结果差异原因及正确性说明
差异根源
问题核心是两个平台的echo命令行为不一致:
- Debian(Linux)环境下,
echo -n参数会抑制结尾的换行输出,因此传给openssl base64的内容只有纯字符1(对应字节0x31)。 - Windows原生环境(cmd/PowerShell)的
echo不支持-n参数——要么把-n当成普通字符串输出,要么直接忽略该参数并默认在输出末尾添加换行符,最终传给openssl.exe base64的内容是1加上换行符(对应字节0x31 0x0A)。
结果正确性
两种编码结果都是符合Base64规范的正确输出,只是编码的原始内容不同:
MQ==是纯字符1的Base64编码结果。MQo=是1加换行符的Base64编码结果。
如果你的需求是编码不带换行的纯字符串1,那Debian平台的结果符合预期;如果是编码带换行的内容,Windows的结果就是正确的。
内容的提问来源于stack exchange,提问作者Guokas
相关产品推荐
相关产品推荐

