You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash与PowerShell的Base64文本编码结果为何存在差异?

问题解答

为什么PowerShell生成的Base64编码末尾有两个==,而Bash的只有一个=?

核心原因是两个命令处理的原始文本内容不一致:

  1. Bash的echo会自动追加换行符
    在macOS/Linux的Bash环境中,执行echo "Hooked on phonics worked for me"时,echo命令默认会在输出字符串的末尾添加一个换行符(\n)。也就是说,实际被Base64编码的内容是"Hooked on phonics worked for me\n"(原字符串+换行符)。

  2. PowerShell仅编码原始字符串
    PowerShell里的[System.Text.Encoding]::UTF8.GetBytes("Hooked on phonics worked for me")只提取了双引号内的原始字符串字节,没有额外添加换行符。

再结合Base64的填充规则来看:
Base64编码以3个字节为一组转换为4个Base64字符,如果原始字节数不是3的倍数,会用=补全:

  • 无换行的原始字符串UTF-8字节数为31,31除以3余1,需要补2个空字节,对应末尾两个==。
  • 加上换行符后的字节数为32,32除以3余2,需要补1个空字节,对应末尾一个=。

你可以自行验证:解码PowerShell的结果会得到原字符串,解码Bash的结果则会得到带换行符的版本。


内容的提问来源于stack exchange,提问作者Francesco Mantovani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:11