【问题标题】:Can't set password using DotNetZip无法使用 DotNetZip 设置密码
【发布时间】:2018-12-11 15:16:48
【问题描述】:

我正在尝试使用 DotNetZip 对 zip 文件进行密码保护。但它不起作用。它可以很好地创建 zip,但是如果我使用 7zip 打开它,我可以在没有密码的情况下提取文件。这是我正在使用的代码。

        using (ZipFile zip = new ZipFile())
        {
            zip.Password = password;
            zip.Encryption = EncryptionAlgorithm.WinZipAes256;
            zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed;

            // Adding folders in the base directory
            foreach (var item in Directory.GetDirectories(someFilePath))
            {
                string folderName = new DirectoryInfo(item).Name;
                zip.AddDirectory(item, folderName);
            }

            // Adding files in the base directory
            foreach (string file in Directory.GetFiles(someFilePath))
            {
                zip.AddFile(file, "");
            }
            zip.Save(someFilePath);
        }

【问题讨论】:

  • 您已确认无需密码即可查看和提取? DotNetZip 上的文档说您可以在受密码保护的情况下查看文件,只是没有它们就无法提取。
  • 我在问题 as-is 中使用了您的代码,生成的 ZIP 文件受密码保护。你的问题出在别的地方。您是否在测试过程中犯了错误?您是否测试了实际创建的 ZIP 存档,而不是意外创建的另一个(旧测试)ZIP 存档?您的真实代码与问题不同吗?
  • 我同意@elgonzo,您编写的代码运行良好。我可以看到文件,但不提供密码就无法提取。
  • 另一种可能性:您的 7-zip 安装是否可能已经存储/缓存/记忆了密码,使其无需再次询问密码?
  • Gilliduck,是的,我实际上可以提取文件。 Elgonzo,感谢您确认我的代码有效。我试过用winzip解压,也解压得很好。所以应该不是 7zip 缓存的问题。

标签: c# zip compression dotnetzip


【解决方案1】:

好的,我修好了。我下载了旧版本的 DotNetZip dll。

我之前使用的是 1.12 版本,但它不起作用。

使用版本 1.10.1 并且创建的 zip 受密码保护

【讨论】:

  • 我使用 1.12.0(通过 nuget 安装)进行测试,没有遇到任何问题。奇怪的。也许您使用了 1.12 的一些 alpha/beta/pre-release/custom build。谁知道...无论如何,很高兴您找到了解决方法...
  • 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 2021-09-21
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多