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加密.
无论如何指定算法它只会提取可读文件,所以文件肯定是可读的,现在我关心的是安全性.
编辑 确保在解压缩之前指定密码算法,否则文件将无法读取!
zip-entry确实使用AES256.在dotnetzip库的源代码中,您可以看到使用的实际加密算法是从字节内容本身中提取的.这就是为什么你不需要在提取时分配正确的算法.(只是密码)
填写变量的源代码_Encryption_FromZipFile:dotnetzip source