我只想知道用于生成加密zip文件时使用的伪随机值的确切公式(或算法)。我正在尝试创建密码黑客(用于zip文件),我还需要知道如何验证我的程序生成的随机密码是否正确。我试图在谷歌搜索这个答案,但我找不到直接的解决方案。
我正在尝试用c ++编写这个zip黑客。
注意:通过公式(或算法)我的意思是:密钥派生函数。 我只想尽快获得必要的信息,这就是我在这里发布的原因!
答案 0 :(得分:3)
不同版本的zip文件采用不同的方式,但基本上你有一个加密标头,根据zip文件specification指定使用的加密。
例如,强加密标头如下所示,并在AlgID字段中指定加密算法。
4.5.12 -Strong Encryption Header (0x0017):
Value Size Description
----- ---- -----------
0x0017 2 bytes Tag for this "extra" block type
TSize 2 bytes Size of data that follows
Format 2 bytes Format definition for this record
AlgID 2 bytes Encryption algorithm identifier
Bitlen 2 bytes Bit length of encryption key
Flags 2 bytes Processing flags
CertData TSize-8 Certificate decryption extra field data
(refer to the explanation for CertData
in the section describing the
Certificate Processing Method under
the Strong Encryption Specification)
答案 1 :(得分:0)
7-zip使用AES-256加密7z / zip档案。(see here)
7-Zip还支持使用AES-256算法进行加密。该算法使用长度为256位的密码密钥。要创建该密钥,7-Zip使用基于SHA-256哈希算法的派生函数。密钥派生函数从用户定义的文本密码生成派生密钥。为了增加穷举搜索密码的成本,7-Zip使用大量迭代从文本密码生成密码密钥。 另外,请记住,暴力攻击是浪费时间。我不会详细说明为什么,我会将你引导到杰夫阿特伍德的博客,他有一个excellent post。