我使用 PowerShell 将字符串进行转换。
$Text = 'ouser:v3$34@#85b&g%fD79a3nf'
$Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text)
$EncodedText =[Convert]::ToBase64String($Bytes)
$EncodedText
然而,当我使用https://www.base64decode.org/或一些用于base64编码的Java库时,我得到了一个不同且更短的版本。
示例字符串:
This is a secret and should be hiden
powershell结果:
VABoAGkAcwAgAGkAcwAgAGEAIABzAGUAYwByAGUAdAAgAGEAbgBkACAAcwBoAG8AdQBsAGQAIABiAGUAIABoAGkAZABlAG4A
正常的base64结果:
VGhpcyBpcyBhIHNlY3JldCBhbmQgc2hvdWxkIGJlIGhpZGVu
虽然我能够使用该网站解码这两个版本,但是使用我的Java代码,我只能解码后者。为什么会这样?是否存在多个版本的base64?这些差异来自哪里?
[System.Text.Encoding]::Unicode
指的是 UTF-16,而后者是 UTF-8。你可以使用[System.Text.Encoding]::UTF8
。 - Thomas Glaser