代码之家  ›  专栏  ›  技术社区  ›  Bruno Gonzalez Torres

使用密码创建ZipFile而不使用外部库C#

  •  0
  • Bruno Gonzalez Torres  · 技术社区  · 2 年前

    正如标题所说,我需要创建一个用给定密码保护的zip文件,但我有以下限制 不要使用任何外部库 。我只能使用 .NET Framework 4.6.1

    目前,我正在使用创建文件 System.IO.Compression 代码是这样的:

    using (MemoryStream zipStream = new MemoryStream())
    {
         using (ZipArchive zipFile = new ZipArchive(zipStream, ZipArchiveMode.Create, false))
         {
              foreach (InlineContent report in reports)
              {
                   ZipArchiveEntry zipEntry = zipFile.CreateEntry(report.FileName, CompressionLevel.Optimal);
                   using (StreamWriter writer = new StreamWriter(zipEntry.Open()))
                   {
                        new MemoryStream(report.Content.ToArray()).WriteTo(writer.BaseStream);
                   }
              }
         }
    }
    

    这就是我生成文件的方式, 不是我怎么保存的 。我知道这与代码的这一部分无关。

    如果有人能帮助我,我将非常感激。

    0 回复  |  直到 2 年前
        1
  •  3
  •   Serg    2 年前

    你不能。在要求将密码支持添加到标准中时出现问题 ZipArchive 类,问题仍然悬而未决: https://github.com/dotnet/runtime/issues/1545

    因此,在不使用第三方库的情况下支持密码的唯一方法是手动从头开始实现具有密码支持的zip格式,并使用此实现而不是 ZipArchive 。我认为不可能在SO的答案中详细说明这样一个实现的所有细节,但你肯定可以查看现有第三方库的来源以供参考。

    推荐文章