【问题标题】:Library for Unzipping password protected file解压缩密码保护文件的库
【发布时间】:2013-01-02 23:12:50
【问题描述】:

我需要解压缩受密码保护的文件。

我要求将库包含到我的 Windows 项目中,而不是实用程序。

要求:

  • 支持密码
  • C 或 C++
  • 不依赖于 MFC
  • 希望它不是 DLL(因为它们通常以某种不兼容的模式编译)

已经搜索过 SO 和 Google,遗憾的是还没有找到库。

  • 最推荐的“zlib”不支持密码;
  • Lucian Wischick (here) 的“Zip Utils”很好,但有一个错误 - 提取的文件在末尾被裁剪;
  • 我发现的另一个库依赖于 MFC。

我不敢相信这个简单的任务在 2012 年没有解决方案。请帮忙。

【问题讨论】:

  • 密码有什么作用?它是解密内容的关键吗?它使用什么加密算法?有很多方法可以对 zip 文件进行密码保护。因此,编写一个可以处理所有这些的库是不可能的。
  • @Chad 很确定他正在寻找用于 zip 文件加密的“两种”广泛使用的密码加密方案之一(可笑的易于破解的 PKWare“加密”,或 WinZip AES-256加密模型。可能两者兼而有之。
  • @WhozCraig - 就是这样......你不知道。如果 OP 知道他也能找到他想要的东西。
  • @Chad 此链接适用于 C# .Net。我需要 C 或 C++ 库。请参阅我的帖子中的要求。
  • @Chad 我需要支持加密的 zip 库,而不仅仅是加密库。阅读我的帖子。

标签: c++ windows zip static-libraries


【解决方案1】:

最终使用"Zip Utils" by Lucian Wischick

有一个错误 - 提取的文件最后被裁剪了 12 个字节。我找到了解决方法。

要修复此错误,请删除文件“unzip.cpp”中的第 3657 行:

pfile_in_zip_read_info->rest_read_uncompressed-=uDoEncHead;

【讨论】:

  • 快速浏览代码,似乎该项目只是将所有 libzip 和 zlib 压缩为两个文件(您仍然可以看到 cmets 引用 libzip.h) libzip 确实支持传统加密,因为嗯,但不是 AES 加密,这是我试图追踪的(我在这个库中看不到任何让我相信它会被支持的代码)
【解决方案2】:

更新:使用 7-zip 作为

测试你的password protected文件是否可以用7-zip解压。
如果是这种情况,那么您应该能够使用代码库(作为 dll)。

该工具支持 zip 解压缩 (ZlibDecoder) 和 2 种可能的不同加密技术(ZipCrypto 和 ZipStrong)。


至于如何使用它,7-zip 文件管理器工具使用 7-zip dll 来完成所有工作。你需要查看命令行工具7z的源代码。

【讨论】:

  • 是否有任何操作说明?试图弄清楚,但它太复杂了。
【解决方案3】:

您可以尝试 Info ZIP。它是开源的,并且支持存档加密:http://sourceforge.net/projects/infozip/

【讨论】:

  • 它实际上不是一个库。它只是一个开源实用程序。所以它可以被使用,但只有很多额外的时间来找出如何包含在我的项目中。如何执行此操作的文档不存在或找不到。