在Powershell中解码Base64字符串

时间:2014-03-20 22:16:26

标签: powershell

我有一个Base64编码文件,我正在尝试以下解码:

[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) 

但是它会产生以下错误:

Exception calling "FromBase64String" with "1" argument(s): "The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding 
characters, or an illegal character among the padding characters.

虽然它完全是Base64。有什么想法吗?

*请注意它是Base64,但不是由PowerShell编码的。

2 个答案:

答案 0 :(得分:3)

如果您想将Base64字符串解码为文本,则可以这样做:

$EncodedText = 'SGVsbG8gV29ybGQh'
$DecodedText = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($EncodedText))
$DecodedText

如果您需要将Base64字符串解码为二进制文件,则可以这样做:

$base64string = ''
$FileName = "file.png"
[IO.File]::WriteAllBytes($FileName, [Convert]::FromBase64String($base64string))

答案 1 :(得分:0)

某些应用程序要求 Base64 字符串以一或两个等号作为填充字符结尾。为了快速测试,您可以在变量 $data 的末尾添加一两个“=”字符,如下所示:

[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data+"="))

然后再次尝试解码。

Decoding Base64 with padding