使用winrar和7-zip创建的.zip格式的差异

时间:2014-09-22 12:32:47

标签: zip 7zip difference winrar archiving

所有

我正在使用第三方lib来存档/解压缩某些文件。 输入/输出格式为.zip。

但我发现lib可以读取使用WinRAR创建的存档,但无法读取使用7-zip创建的存档。

有谁能告诉我问题是什么以及如何解决。

使用winRar创建的存档启动的十六进制视图:

  

50 4b 03 04 14 00 00 00 08 00 EC 88 25 45 6e 1a ....

使用7-zip创建的存档启动的十六进制视图:

  

50 4b 03 04 14 00 00 00 08 00 ED 88 25 45 6e 1a ....

区别在于字节ECED

2 个答案:

答案 0 :(得分:2)

这是ZIP文件的标题结构:

+---------------------------------------------------------------------+
|                             BYTE                                    |
|0x0 0x1 0x2 0x3|0x4 0x5|0x6 0x7| 0x8   0x9 |0xA  0xB|0xC  0xD|       |
+---------------+-------+-------+-----------+--------+--------+-------+
|  signature    |version| flags |compression|mod time|mod date| CRC32 |
+---------------+-------+-------+-----------+--------+--------+-------+
| 50  4B  03  04| 14  00| 00  00|  08    00 |EC/ED 88| 25   45|       |
+---------------------------------------------------------------------+
  • 签名始终为0x50 0x4B 0x03 0x04(如您的情况)。 0x50 ='P',0x4B ='K'(Phillip Katz
  • 需要提取
  • 版本(0x14 0x00 = 20 - > ZIP 2.0)
  • 通用位标志(无标记,您的文件不加密/默认语言编码)
  • 压缩方法是deflate(08)

因此,唯一改变的是修改时间(仅几分钟)。

即使CRC32的前两个字节也是相同的。如果唯一差异EC / ED值,则问题不应该是归档内容。

进一步参考:https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html

答案 1 :(得分:0)

7-Zip档案可以使用多个不同的compression formats创建,这些档案与基于Info-ZIP源代码的标准ZIP压缩/解压缩库不兼容。

支持创建/提取ZIP文件的WinRAR和Total Commander等应用程序本身也使用了一个DLL,用于从非标准7-Zip档案中提取文件。

请参阅问题我可以在7-Zip的FAQ页面上使用商业应用程序中7-Zip的EXE或DLL文件吗?