代码之家  ›  专栏  ›  技术社区  ›  J. Steen

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

  •  7
  • J. Steen  · 技术社区  · 9 年前

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

    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 回复  |  直到 9 年前
        1
  •  10
  •   J. Steen    9 年前

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

    zipFile.Encryption = EncryptionAlgorithm.PkzipWeak;
    

    根据EncryptionAlgorithm枚举的文档:

    […]如果使用WinZipAes256生成zip存档,则可以在Windows XP和Vista上的Windows资源管理器中打开它,但无法提取条目;尝试此操作将导致“未指定的错误”。

    注意:流行的第三方归档实用程序(如WinZip或7-Zip)可以很好地处理AES加密。这是Windows资源管理器,这是牌组中的薄弱牌。