解压程序如何检查密码是否正确?

信息安全 密码 压缩
2021-09-02 00:51:59

它显然不与任何类型的数据库连接。这怎么可能?

2个回答

将其视为“密码保护”稍微歪曲了实际情况。

当您对 zip 文件进行密码保护时,会发生什么情况是使用密码作为密钥的对称算法(加密和解密的相同密钥)对存档进行加密。

解压缩程序“检查”钥匙是否正确,就像我检查前门钥匙是否正确一样:如果它打开锁,那就是正确的钥匙。

因此,在这种情况下,解压缩程序会尝试使用您提供的密码来解密数据,如果输出是结构正确的存档,那么它就是正确的密码。

(我现在跳过整个密码学辩论 WRT 冲突和可能的重复密钥;这是关于这个概念在理论上是如何工作的,而不是一个可能有也可能没有缺陷的具体实现)

编辑:正如用户MobyDisk在评论中指出的那样,特别是在 Zip 的情况下,结构和文件树没有加密,只有文件本身以及每个文件的校验和。如果您使用的密码对文件进行解密,并且解密后的校验和匹配,则您的密码正确。

这取决于特定的 zip 加密算法。

例如,原始 ZIP 规范使用密码来初始化一组三个 32 位解密密钥。然后解密 ZIP 标头(放在开头的 12 个随机字节),然后:

“标头解密后,缓冲区中的最后 1 或 2 个字节应该是被解密文件的 CRC 的高位字/字节......这可用于测试提供的密码是否正确。 "

邮编规范,第 6.1 节)