Powershell base64与常规base64

Powershell base64与常规base64,powershell,base64,Powershell,Base64,我使用powershell转换字符串 $Text = 'ouser:v3$34@#85b&g%fD79a3nf' $Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text) $EncodedText =[Convert]::ToBase64String($Bytes) $EncodedText 然而,当使用或某些java库进行base64编码时,我得到了一个不同的、较短的版本 示例字符串: 这是一个秘密,应该隐藏起来 powers

我使用powershell转换字符串

$Text = 'ouser:v3$34@#85b&g%fD79a3nf'
$Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text)
$EncodedText =[Convert]::ToBase64String($Bytes)
$EncodedText 
然而,当使用或某些java库进行base64编码时,我得到了一个不同的、较短的版本

示例字符串:

这是一个秘密,应该隐藏起来

powershell结果:

Vaboagkacwagagacwagagagagagagagagagagagagagagagagagagagagagagagagagagababababakacacaacwboag8adqbsaggagagagabagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagababababagaga

正常base64结果:

VGHPCYBPCYBHINLY3JLDCBHBMQGC2HVDWXKIGJLIGHPZGVU


在使用该网站时,我能够解码两个版本,但使用java代码,我只能解码后者。为什么呢?base64是否有多个版本?这些差异从何而来?

添加@Raziel的评论,以更好地发现这个问题


[System.Text.Encoding]:Unicode]
是UTF-16,后者是UTF-8。您可以使用
[System.Text.Encoding]::UTF8

您使用的是Unicode编码,这意味着每个字符有两个字节,一个字节表示ASCII。改为使用UTF8。
[System.Text.Encoding]:Unicode
是UTF-16,后者是UTF-8。您可以使用
[System.Text.Encoding]::UTF8
。确实,编码导致了这种行为。很遗憾,您不能将注释标记为答案。