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

为何PowerShell生成的Base64字符串在其他工具解码时出现点号?

PowerShell生成的Base64在CyberChef解码出现点号的原因

编码过程

PowerShell编码代码

$x = "This text needs to be encoded"
$z = [System.Text.Encoding]::Unicode.GetBytes($x)
$y = [System.Convert]::ToBase64String($z)
Write-Host("$y")

控制台输出的Base64字符串

VABoAGkAcwAgAHQAZQB4AHQAIABuAGUAZQBkAHMAIAB0AG8AIABiAGUAIABlAG4AYwBvAGQAZQBkAA==

解码过程

PowerShell解码代码

$v = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($y))
Write-Host("$v")

正常解码结果

This text needs to be encoded

第三方工具解码异常

将上述Base64字符串放入CyberChef等工具,使用「From base64」解码后,结果会出现点号:

T.h.i.s. .t.e.x.t. .n.e.e.d.s. .t.o. .b.e. .e.n.c.o.d.e.d.

原因解析

问题核心是编码格式不匹配:

  • PowerShell里的[System.Text.Encoding]::Unicode实际对应**UTF-16LE(小端序)**编码,这种编码下每个ASCII字符会被编码成两个字节——字符本身的字节加上一个空字节(0x00)。
  • CyberChef等工具默认用UTF-8解码Base64还原出的字节流。UTF-8中单个ASCII字符仅占1字节,当它遇到UTF-16LE里的空字节(0x00)时,无法识别为有效字符,就会用点号(或其他替代符号)显示。

如果要在CyberChef里得到正确结果,需要先做「From base64」操作,再添加「Decode text」步骤并指定编码为UTF-16LE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:55:30