【问题标题】:Decoding base64 with powershell使用 powershell 解码 base64
【发布时间】:2013-09-14 14:32:20
【问题描述】:

我正在尝试从 base64 解码电子邮件文件中的附件并将其保存到磁盘。

出于测试目的,这是我的代码。其中 input.txt 仅包含 base64 编码数据,这是一个 HTML 文件。

$file = "C:\input.txt"
$data = Get-Content $file
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) > out.html

解码工作正常,它会生成一个包含所有行的新文件,并且与原始附件明显相同。问题是输出文件的大小是原来的两倍(在这种情况下实际上是 (filesize*2)+6 字节)。

我解码不正确吗?我也尝试过 UTF8 而不是 ASCII...同样的结果。

【问题讨论】:

    标签: base64 powershell-3.0


    【解决方案1】:

    好吧,我让它工作了。谁知道 Out-File 默认重新编码为 Unicode?解决方法如下:

    $file = "C:\input.txt"
    $data = Get-Content $file
    [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) | Out-File -Encoding "ASCII" out.html
    

    【讨论】:

    • 我建议改为-Encoding "UTF-8"
    • 好像是-Encoding "UTF8"
    【解决方案2】:

    这一单行代码保留了 base64 编码文件的原始编码,因此它适用于 PDF 或 ZIP 等二进制文件。根据需要更改".\input.txt"output.bin - 这将采用.\input.txt,base 64 对其进行解码,然后将字节写入output.bin,与文件编码时完全相同。

    $file = ".\input.txt"; [System.Convert]::FromBase64String((Get-Content $file)) | Set-Content output.bin -Encoding Byte
    

    【讨论】:

      【解决方案3】:

      在 Windows 10 上,您可以使用 PowerShell:

      certutil -decode in.b64 out.txt
      

      【讨论】:

        【解决方案4】:

        我知道这是一个老问题,但我找到了另一个答案。 您可以在base64转换时使用unicode,它会适合之后。

        $file = "C:\temp\input.txt"
        $data = Get-Content $file
        [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($data)) > out.html
        

        【讨论】:

          【解决方案5】:

          老问题,新答案。保留换行符的解决方案

          // Generate Content
          ssh-keygen -t rsa -b 2048 -f example_rsa
          // Encode
          [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($(Get-Content -Path example_rsa -Encoding utf8 -Raw))) >> encoded
          // Decode
          [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(Get-Content -Path encoded -Encoding utf8 -Raw))) >> decoded
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-07-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-15
            • 1970-01-01
            • 2012-11-05
            相关资源
            最近更新 更多