DotNetZip真的使用WinZipAes256吗?

本文关键字:WinZipAes256 真的 DotNetZip | 更新日期: 2023-09-27 18:35:32

我正在使用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加密。

无论如何,指定算法它将仅提取可读文件,因此该文件肯定是可读的,现在我担心的是安全性。

编辑请确保在提取之前指定密码算法,否则文件将并不总是可读的!

DotNetZip真的使用WinZipAes256吗?

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

填充变量_Encryption_FromZipFile的源代码:dotnetzip 源代码