为什么PKWARE网站上的ZIP APPNOTE没有在其规范中提到正确的密码检查机制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么PKWARE网站上的ZIP APPNOTE没有在其规范中提到正确的密码检查机制?相关的知识,希望对你有一定的参考价值。

我一直在阅读password check mechanism中的PKWARE遗产APPNOTEs。在6.1.6节解密加密标题的末尾,该段落声明如下:

在解密头之后,缓冲区中的最后1或2个字节应该是被解密文件的CRC的高位字/字节,以英特尔低字节/高字节顺序存储。 2.0之前的PKZIP版本使用2字节CRC校验;在2.0之后的版本上使用1字节CRC校验。这可用于测试提供的密码是否正确

上面的段落只提到了CRC的1或2字节检查,但没有提到它也可以检查last mod file time而不是CRC,基于bit 3general purpose bit flag

我使用默认的zip 3.0在linux机器上使用Traditional PKWARE Encryption加密了一个文件,经过以下的解密过程后,我意识到应该用last mod file time而不是CRC检查最后一个或两个字节,以检查密码是否正确。

在网上搜索了一段时间之后,我才发现这个版本的APPNOTE实际上描述了CRClast mod file time的检查,取决于bit 3general purpose bit flag

linux zip 3.0不遵循PKWARE APPNOTE标准或PKWARE没有提到上述信息吗?

答案

linux zip 3.0是不符合PKWARE APPNOTE标准还是PKWARE没有提到上述信息?

两者都是真的。 PKWARE并不觉得有必要在其标准中添加第三方更改。但是,感谢您找到有关此时间戳字节的任何文档。通过查看Info-Zip的源代码,我们已经通过时间戳字节替换了CRC字节(顺便说一句,这是一个好主意)之前我对自己的实现感到头疼。

以上是关于为什么PKWARE网站上的ZIP APPNOTE没有在其规范中提到正确的密码检查机制?的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础命令---unzip

.ZIP 格式规范中定义的字长

盘点一些主流压缩格式的优缺点-zip/RAR/7-zip

如何使用 python zipfile 库检查 zip 文件是不是在多个档案中拆分?

寻找支持 Java 和强加密的存档 [关闭]

在 Linux 上恢复破解解压缩 Zip 2.0 (Legacy) 文件并丢失密码