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加密。
无论如何,指定算法它将仅提取可读文件,因此该文件肯定是可读的,现在我担心的是安全性。
编辑请确保在提取之前指定密码算法,否则文件将并不总是可读的!
zip条目确实使用了AES256。在dotnetzip库的源代码中,可以看到实际使用的加密算法,是从字节内容本身中提取的。这就是为什么您在提取时不需要分配正确的算法。(只是密码)
填充变量_Encryption_FromZipFile
的源代码:dotnetzip 源代码