【问题标题】:best way to encode and decode a file to base64 or base128?将文件编码和解码为 base64 或 base128 的最佳方法?
【发布时间】:2013-07-15 21:03:26
【问题描述】:

如何在 C# 中将文件编码为 base64 以及如何检索它?

例如,将 zip 文件编码为 base64 并再次检索它。

【问题讨论】:

标签: c# base64 encode


【解决方案1】:

最好的办法是使用ToBase64TransformFromBase64Transform 加密接口。

此代码示例背后的基本要点是,您使用 From/ToBase64Transform 转换类和标准加密流来处理将传入数据与 base64 转换或从 base64 转换的繁重工作。在ConvertToBase64 方法中,您会注意到它用“ToBase64”加密流包装了目标文件流,然后我们将源流中的内容复制到base64 加密流中。解码时也一样,只是稍微向后应用。我们将源流包装在“FromBase64”中,以便在数据进入时对其进行解码,然后使用它将其复制到目标流中。

一个非常粗略(未经测试的例子)是这样的:

using System;
using System.IO;
using System.Security.Cryptography;

void ConvertToBase64(string sourceFileName, string destFileName) {
  FileStream source = new FileStream(sourceFileName, FileMode.Open,
                            FileAccess.Read, FileShare.Read);
  FileStream dest = new FileStream(destFileName, FileMode.Create,
                          FileAccess.Write, FileShare.None);
  ICryptoTransform base64 = new ToBase64Transform();
  CryptoStream cryptoStream = new CryptoStream(dest, base64, CryptoMode.Write);

  using (source) using (dest) using (base64) using (cryptoStream) {
    source.CopyTo(cryptoStream);
    cryptoStream.FlushFinalBlock();
  }
}

void ConvertFromBase64(string sourceFileName, string destFileName) {
  FileStream source = new FileStream(sourceFileName, FileMode.Open,
                            FileAccess.Read, FileShare.Read);
  ICryptoTransform base64 = new FromBase64Transform();
  CryptoStream cryptoStream = new CryptoStream(source, base64, CryptoMode.Read);
  FileStream dest = new FileStream(destFileName, FileMode.Create,
                          FileAccess.Write, FileShare.None);

  using (source) using (base64) using (cryptoStream) using (dest) {
    cryptoStream.CopyTo(dest);
  }
}

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多