【发布时间】:2014-12-28 12:50:31
【问题描述】:
我正在使用 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\");
}
}
在某些情况下,提取物会产生一些不可读的文件,但并非总是如此;大多数时候在没有指定算法的情况下完全可读。
现在基于他们的 wiki:
创建使用与 WinZip 兼容的 AES 加密的 Zip 存档。回答有关
所有 zip 工具都支持的标准密码保护很弱,WinZip 扩展了 ZIP 规范并添加了一种使用 AES 加密来保护 Zip 文件中的条目的方法。
但不明白这是否真的是 AES 256 加密。
无论如何指定算法,它只会提取可读文件,因此文件肯定是可读的,现在我担心的是安全性。
编辑 确保在提取之前指定密码算法,否则文件将不总是可读的!
【问题讨论】:
-
您有什么实际问题要问吗?
-
是的,可能不清楚,但我的实际问题是,加密是 aes 256 还是 pkzip。
-
问题“DotNetZip 是否会在您提供正确密码时自动检测它正在读取的档案的加密?” 也是相关的。您必须检查 zipfile 或编写存档的代码才能回答您的问题。