我正在研究可用于检查加密 zip 文件的给定密码是否正确的方法。我看到这个链接:
在这个问题的答案中,它说CRC用于检查密码是否正确。它还粘贴了来自 Info-zip 的代码片段来证明这一点。
不过仔细研究了Info-zip源码,如下:
if ((ush)(c | (b<<8)) != (GLOBAL(pInfo->ExtLocHdr) ?
((ush)GLOBAL(lrec.last_mod_dos_datetime) & 0xffff) :
(ush)(GLOBAL(lrec.crc32) >> 16)))
我发现当zip项中有ExtLocHdr时,将使用last_mod_dos_datetime的低2个字节而不是CRC来验证密码。但这在https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT中的文件格式规范中根本没有提到。
为什么?