为什么不能 Windows 7 从我使用 DotNetZip 创建的受密码保护的 zip 文件中提取文件?

Why can't Windows 7 extract files from my password protected zip-file created using DotNetZip?

我正在使用 DotNetZip 创建一个受密码保护的 zip 文件。当我尝试提取文件时遇到 "unspecified error"。这是为什么?

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);
}

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

zipFile.Encryption = EncryptionAlgorithm.PkzipWeak;

根据 EncryptionAlgorithm 枚举的文档:

[...] if you produce a zip archive using WinZipAes256, you will be able to open it in Windows Explorer on Windows XP and Vista, but you will not be able to extract entries; trying this will lead to an "unspecified error".

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