【问题标题】:Why can't Windows 7 extract files from my password protected zip-file created using DotNetZip?为什么 Windows 7 不能从我使用 DotNetZip 创建的受密码保护的 zip 文件中提取文件?
【发布时间】:2015-03-24 15:44:48
【问题描述】:

我正在使用DotNetZip 创建一个受密码保护的 zip 文件。当我尝试提取文件时遇到“未指定错误”。这是为什么呢?

using (var zipFile = new ZipFile())
{
    zipFile.Encryption = EncryptionAlgorithm.WinZipAes256;
    zipFile.Password = "pangolin";

    foreach(var file in someFileCollection)
    {
        zipFile.AddEntry(file.Name, file.Stream);
    }

    zipFile.Save(aPathOnDisk);
}

【问题讨论】:

    标签: c# .net dotnetzip


    【解决方案1】:

    这是因为 Windows,更具体地说是 Windows 资源管理器无法处理 AES 级加密,需要将加密级别设置为 PkzipWeak,这被记录为“传统或经典 pkzip 加密。

    zipFile.Encryption = EncryptionAlgorithm.PkzipWeak;
    

    根据 EncryptionAlgorithm 枚举的文档:

    [...] 如果您使用 WinZipAes256 生成 zip 存档,您将能够在 Windows XP 和 Vista 上的 Windows 资源管理器中打开它,但您将无法提取条目;尝试这样做会导致“未指定的错误”。

    注意:WinZip 或 7-Zip 等流行的第三方存档实用程序可以很好地处理 AES 加密。 Windows 资源管理器是套牌中的弱牌。

    【讨论】:

    • 看起来 7-Zip 可以处理它,我猜 WinZip 也可能是 WinRar。
    • @JoeEnos 是的。尤其是 Windows 资源管理器在这方面比较薄弱。
    • 在相关说明中,如果使用 7zip 密码保护档案,您必须使用加密方法“ZipCrypto”而不是“AES-256”。这个答案帮助我弄清楚了。
    • Mac 似乎和 Windows 有同样的问题。我没有创建该文件,但我遇到了一个 Windows 和 Mac 在尝试提取时都会引发权限错误的文件。 WinRar 能够提示输入密码并正确处理。
    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多