问题出在 Bash 和 Powershell 对 base64 编码的结果不同。在 Bash 中,base64 编码的字符串末尾会多出一个换行符('\n'),而在 Powershell 中则会多出一个字符,这个字符并不是等号('=')。
若将 Bash 中的 base64 编码结果直接传递给 Powershell,会发现 Powershell 报错,要求在末尾加上一个等号符号。
解决办法是在 base64 编码后将末尾的换行符或其他多余字符去除,然后再追加一个等号符号即可。
示例代码(Bash):
# 以字符串 "hello world" 为例
encodedString=$(echo "hello world" | base64)
# 去除末尾换行符
encodedString="${encodedString%'\n'}"
# 追加一个等号符号
encodedString="${encodedString}="
echo $encodedString
示例代码(Powershell):
# 假设获取到的 base64 编码结果存在变量 $encodedString 中
# 去除末尾非等号字符
$encodedString = $encodedString.TrimEnd("`r","`n")
# 追加一个等号符号
$encodedString += "="
Write-Output "$encodedString"