【问题标题】:Is DotNetZip really using WinZipAes256?DotNetZip 真的使用 WinZipAes256 吗?
【发布时间】: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 或编写存档的代码才能回答您的问题。

标签: c# security aes dotnetzip


【解决方案1】:

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

填充变量_Encryption_FromZipFile的源码:dotnetzip source

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多