如何通过7-zip存档的加密机制实现key_derivation和key_verification功能?

Gop*_*pal 7 encryption cryptography 7zip password-recovery cryptanalysis

我很好奇密码恢复如何适用于受密码保护的文件. And I want to know the exact flow of the 7-zip encryption mechanism.

7-zip在CBC模式下使用AES-256加密算法来加密文件或文件夹.密钥由用户提供的基于SHA-256哈希函数的密码短语生成.SHA-256执行2 19(524,288)次,以增加穷举搜索的成本.此外,为了帮助降低字典攻击的风险,在生成哈希之前,salt会附加到原始密码短语.

我的第一个问题是how does key_derivation function work to generate a 256-bit key?IV C对AES CBC模式及其生成方式的重要性是什么?

我的第二个most important question是如何验证密钥解密7-zip存档?我的意思是它的key_verification函数如何工作?

Maa*_*wes 5

关键推导函数在 file 的源代码中7zAes.cpp,它被称为:

void CKeyInfo::CalculateDigest()
Run Code Online (Sandbox Code Playgroud)

它使用专有(相当乏味)的机制创建密钥。

我还没有找到key_verification方法,如果它存在的话。如果我找到了,我会告诉你的。