首页 文章

如何解码Base64字符串?

提问于
浏览
36

我在Powershell中有一个普通字符串,它来自包含Base64文本的文本文件;它存储在 $x 中 . 我试图解码它:

$z = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($x));

如果 $x 是在Powershell中创建的Base64字符串(但事实并非如此),则此方法有效 . 这对于来自文件的 $x Base64字符串不起作用, $z 最终会像 䐲券 那样结束 .

我错过了什么?例如, $x 可以是 YmxhaGJsYWg= ,这是 blahblah 的Base64 .

简而言之, YmxhaGJsYWg= 在一个文本文件中,然后放入这个Powershell代码中的字符串,我尝试解码它,但最终得到 䐲券 等 .

4 回答

  • 4

    Base64编码将三个8位字节(0-255)转换为四个6位字节(0-63又称base64) . 四个字节中的每一个都将ASCII字符串索引,该字符串将最终输出表示为四个8位ASCII字符 . 索引字符串通常是'A-Za-z0-9 /',其中'='用作填充 . 这就是编码数据长4/3的原因 .

    Base64解码是逆过程 . 正如人们所预料的那样,解码数据的长度为3/4 .

    虽然base64编码可以编码纯文本,但它的真正好处是编码不可打印的字符,这些字符可以通过将系统作为控制字符进行解释 .

    我建议原始海报将$ z渲染为字节,每个位对应用程序都有意义 . 将不可打印的字符呈现为文本通常会调用Unicode,这会根据系统的本地化生成字形 .

    Base64decode(“生命的答案宇宙和一切”)= 00101010

  • 1

    当您谷歌如何转换为base64时,此页面会显示,所以为了完整性:

    $b  = [System.Text.Encoding]::UTF8.GetBytes("blahblah")
    [System.Convert]::ToBase64String($b)
    
  • 2

    是不是编码采用文本TO base64和解码将base64 BACK转换为文本?你好像在混合它们 . 当我使用this online decoder解码时,我得到:

    BASE64: blahblah
    UTF8: nVnV
    

    而不是相反 . 我不能完全在PS中重现它 . 见下面的示例:

    PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("blahblah"))
    nV�nV�
    
    PS > [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nVnV"))
    blZuVg==
    

    EDIT 现在你've come up with a proper question, I can try to answer it. I believe you'为你的文字使用了错误的编码器 . 编码的base64字符串由UTF8(或ASCII)字符串编码 .

    PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
    blahblah
    
    PS > [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
    汢桡汢桡
    
    PS > [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
    blahblah
    
  • 46

    我在输出之间显示空格问题,并且根本没有在线答案来解决此问题 . 我真的花了很多时间试图找到一个解决方案,并找到了一个解决方案的问题,以至于我几乎不知道在我开始工作的时候输入了什么 . 以下是我对此问题的解决方法: [System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($base64string)|?{$_}))

相关问题