使用密码创建 ZipFile,无需外部库 C#

Create ZipFile with password without external libraries C#

提问人:Bruno Gonzalez Torres 提问时间:10/2/2023 更新时间:10/2/2023 访问量:61

问:

正如标题所说,我需要创建一个使用给定密码保护的 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);
               }
          }
     }
}

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

如果有人能帮我解决这个问题,我将不胜感激。

C# .NET IO 压缩 .net-framework-version

评论


答:

3赞 Serg 10/2/2023 #1

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

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

评论

0赞 Bruno Gonzalez Torres 10/2/2023
我一直在读很多关于这个的文章,我认为这就是你所说的。谢谢你的回答!