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