DotNetZip真的使用WinZipAes256吗?

时间:2014-12-28 12:50:32

标签: c# security aes dotnetzip

我正在使用dotnetzip创建一些带有一些AES密码的zip文件 喜欢:

 using (ZipFile zip = new ZipFile())
 {
       zip.Password = PASS;
       zip.Encryption = EncryptionAlgorithm.WinZipAes256;
       zip.AddFile("test.txt"); 
       zip.Save("test.zip");
 }

之后我注意到在没有指定它正在运行的算法的情况下读取文件 没有问题

 using (ZipFile zip = ZipFile.Read("test.zip")
 {
       zip.Password = PASS;
       // zip.Encryption = EncryptionAlgorithm.WinZipAes256; 
       foreach (ZipEntry e in zip)
       {
           e.Extract(@"C:\tmp\");
       }
 }

然后有些情况下提取产生了一些不可读的文件,但并非总是如此;在没有指定算法的情况下,大部分时间都是完全可读的。

现在基于他们的维基:

  

创建一个使用WinZip兼容的AES加密的Zip存档。回答关注的问题       所有zip工具支持的标准密码保护功能都很弱,WinZip已经扩展了ZIP       规范并添加了一种使用AES加密来保护Zip文件中的条目的方法。

但不明白这是否真的是AES 256加密。

无论如何指定算法它只会提取可读文件,所以文件肯定是可读的,现在我关心的是安全性。

修改 确保在解压缩之前指定密码算法,否则文件将无法读取!

1 个答案:

答案 0 :(得分:5)

zip-entry确实使用AES256。在dotnetzip库的源代码中,您可以看到使用的实际加密算法是从字节内容本身中提取的。这就是为什么你不需要在提取时分配正确的算法。 (只是密码)

填写变量_Encryption_FromZipFile的源代码:dotnetzip source