有密码的ZIP文件比没有密码的增加12个字节,这12个字节就是根据你压缩时提供的密
码形成的,12个字节内容的形成具有单向性,即不可逆,类似MD5算法。一般的暴力破解
法,就是测试每一个密码组合,与加密时形成的12字节内容进行运算,得到解密的Key,
然后解开其中的一个文件,检测CRC值是否与ZIP文件中记录的是否一致,如果相同,说明密
码组合正确。虽然ZIP的加密算法相对简单,一般的主流PC每秒种可测试千万次级别,如果
设置的密码超过8位,暴力法基本就没可能了(不知道用“深蓝”如何?希望有一天我买一台
试试[
])。
对于位数较多的密码,一般不采用暴力法,应了解被加密文件的内容,在得到一定字节
数的文件头内容的情况下,可以形成未加密样本进行比较,则解密速度可大幅度提高。相当
多的文件,其文件头内容的相对固定的,看看我们一般的 .pas文件,前面一段的内容是由
Delphi生成的,基本一样,当然其长度作为解密样本是不够的。但很多程序员,喜欢在
Unit文件的前面加上很多的固定版权说明,如果足够多,就有可能作为样本了。
看看FastReport的加密情况,其加密的内容仅为fr_Class.pas一个文件,但是其文件头
相当长的内容与未加密的单元文件相同,因此就成为破解的薄弱环节。