DotNetZip真的使用WinZipAes256吗?

dan*_*iel 1 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");
 }
Run Code Online (Sandbox Code Playgroud)

在此之后,我注意到在没有指定算法的情况下读取文件没有问题

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

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

现在基于他们的维基:

创建使用WinZip兼容的AES加密的Zip存档.由于担心
所有zip工具支持的标准密码保护功能都很薄弱,WinZip扩展了ZIP规范并添加了一种使用AES加密来保护Zip文件中条目的方法.

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

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

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

Tim*_*aut 5

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

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