使用.NET 4.5解压缩受密码保护的ZIP文件

时间:2012-10-31 14:42:20

标签: c# .net zip .net-4.5

Microsoft在System.IO.Compression命名空间中引入了.NET 4.5中ZIP文件处理的改进。即班级ZipArchiveZipFile。 但是,我还没有看到过对密码保护文件使用本机.NET ZIP文件处理的方法。有没有办法实现这个目标? (我知道有很好的第三方zip文件库,这不是问题。)

7 个答案:

答案 0 :(得分:22)

不幸的是没有。 .Net Framework 4.5中不支持受密码保护的zip文件。在这种情况下,您必须切换到众所周知的第三方库之一。

答案 1 :(得分:18)

正如所指出的那样,DotNetZip是你的朋友。解压缩您的zip文件就像

一样简单
using ( ZipFile archive = new ZipFile( @"c:\path\to\your\password\protected\archive.zip",) )
{
  archive.Password = "your-pass-word-here" ;
  archive.Encryption = EncryptionAlgorithm.PkzipWeak ; // the default: you might need to select the proper value here
  archive.StatusMessageTextWriter = Console.Out;

  archive.ExtractAll( @"c:\path\to\unzip\directory\", ExtractExistingFileAction.Throw ) ;
}

根据我的经验,DotNetZip的运行速度与Info-Zip's开源unzip实用程序一样快,并使用大致相同的内存量。


编辑注: DotNetZip曾经住在Codeplex。 Codeplex已关闭。旧档案仍为available at Codeplex。看起来代码已迁移到Github:


答案 2 :(得分:5)

离子方法很棒。我尝试了其他三种方法,这是迄今为止最好的方法。不要浪费时间,只需使用它。

https://dotnetzip.codeplex.com/wikipage?title=PS-Examples

支持密码加密和其他zip选项。

答案 3 :(得分:4)

在查看4.5框架提供的methods时,没有一种方法允许使用zip文件的密码。如你的问题所述,第三方将是你最好的选择。

答案 4 :(得分:3)

在本机.net 4.5库中似乎没有对受密码保护的zip文件的支持,类似于Windows资源管理器中似乎没有支持,即使使用Windows 10! 有些人报告称他们使用第三方DotNetLib时存在拉链损坏问题,因此请务必进行广泛测试,看看是否沿着这条路走下去或尝试使用SharpZipLib

答案 5 :(得分:0)

对于那些面向.Net Standard 2.0的用户,SharpZipLib可以出色地完成工作,可以将内存中受密码保护的zip文件优雅地提取到byte []。

https://github.com/icsharpcode/SharpZipLib

在相同的情况下尝试使用Ionic,但可以使用ZipInputStream提取文件,从而生成损坏的提取字节数组。

答案 6 :(得分:0)

我发现在C#中解压缩的方法非常简单
安装PM(您可以找到可用的新版本!)

Install-Package Ionic.Zip -Version 1.9.1.8

代码C#

string zipFile = @"C:\Users\Fesslersoft\Desktop\ZipTest\Test.zip";
string targetDirectory = @"C:\Users\Fesslersoft\Desktop\ZipTest\";
 
using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(zipFile))
{
    zip.Password = "1234";
    zip.ExtractAll(targetDirectory, Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite);
}
 
Console.WriteLine("Zip file has been successfully extracted.");
Console.Read();

来源:https://codesnippets.fesslersoft.de/extract-a-password-protected-zip-file-using-dotnetzip/