为什么Windows 7无法从使用DotNetZip创建的密码保护zip文件中提取文件?

7
我正在使用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);
}
1个回答

10

这是因为Windows,尤其是Windows Explorer无法处理AES级别的加密,并要求将加密级别设置为PkzipWeak,这被记录为“传统或经典 pkzip 加密。

zipFile.Encryption = EncryptionAlgorithm.PkzipWeak;

根据EncryptionAlgorithm枚举的文档:

[...] 如果您使用WinZipAes256生成zip归档文件,则可以在Windows XP和Vista上的Windows Explorer中打开它,但是您将无法提取条目; 尝试这样做将导致“未指定的错误”。

注意:流行的第三方归档工具(例如WinZip或7-Zip)可以很好地处理AES加密。问题出现在Windows Explorer上。


看起来7-Zip可以处理它,我猜WinZip和可能也包括WinRar。 - Joe Enos
@JoeEnos 是的。特别是Windows资源管理器在这方面很薄弱。 - J. Steen
2
顺便提一下,如果使用7zip对存档进行密码保护,您必须使用加密方法“ZipCrypto”而不是“AES-256”。这个答案帮助我找到了解决方法。 - Demonslay335
1
似乎Mac和Windows有相同的问题。我没有创建这个文件,但我遇到了一个在尝试提取时Windows和Mac都会抛出权限错误的文件。WinRar能够提示输入密码并正确处理它。 - Greg Smalter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接