所有
我正在使用第三方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 ....
区别在于字节EC
和ED
。
答案 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| |
+---------------------------------------------------------------------+
因此,唯一改变的是修改时间(仅几分钟)。
即使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文件吗?。