解压有密码保护的文件的库

4

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

我正在寻找可用于Windows项目的库,而不是实用程序。

要求:

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

已经在SO和Google上搜索过,不幸的是还没有找到任何库。

  • 最受推荐的“zlib”不支持密码;
  • Lucian Wischick的“Zip Utils”(此处)很好,但存在一个问题-提取的文件在结尾处被裁剪;
  • 我找到的另一个库依赖于MFC。

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


密码的作用是什么? 它是解密内容的关键吗?它使用哪种加密算法?有很多方法可以保护zip文件的密码。因此,编写一个处理所有情况的库是不可能的。 - Chad
@Chad zip文件通过Linux shell脚本命令进行加密。一些标准语法。显然不是Winzip。 - Nex
@Chad:“密码有什么作用?它是解密内容的钥匙吗?” 是的,它是解密内容的钥匙。存档最初是用密码创建的。因此,任何用户都可以查看存档中的文件名列表,但不能查看这些文件的内容。 - Nex
1
@Chad 这个链接是关于C# .Net的。我需要C或C++库。请看一下我发帖中的要求。 - Nex
1
@Chad 我需要带有加密支持的zip库,而不仅仅是加密库。请阅读我的帖子。 - Nex
显示剩余9条评论
3个回答

4

最终使用了Lucian Wischick的Zip Utils

发现一个问题——提取的文件末尾被截断了12个字节。我找到了解决办法。

要解决这个问题,请删除文件“unzip.cpp”中的第3657行:

pfile_in_zip_read_info->rest_read_uncompressed-=uDoEncHead;

快速浏览代码后,似乎该项目只是将libzip和zlib压缩到两个文件中(您仍然可以看到引用libzip.h的注释)。libzip确实也支持传统加密,但不支持AES加密,这正是我想要追踪的内容(而且我没有看到这个库中任何让我有信心它会被支持的代码)。 - Grant Peters

2

更新:使用7-zip作为库

测试一下你的受密码保护文件是否可以通过7-zip进行解压缩。
如果可以,那么你应该能够将代码库(作为dll)使用。

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


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


有没有如何操作的指示?尝试去理解,但它太复杂了。 - Nex

0

它实际上并不是一个库,只是一个开源工具。因此,它可以被使用,但需要花费额外的时间来找出如何将其包含在我的项目中。关于如何做到这一点的文档不存在或无法找到。 - Nex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接