做过 AES 加密,隐约记得 AES-256 的处理速度好像是 10MB/s,假设破解 ZIP 文件需要读一个扇区的数据,那么一秒能处理 20480 个扇区,24 小时一共能处理:
20480360024=1769472000 = 1.769472e+9
按照你说的组合:假设只包括大小写和数字,一共是 62 个字符,9 位的总组合数是:
62^9 = 13537086546263552 = 1.3537086546263552e+16
数量级差了 7 个,就算处理速度提高 1000 倍,还需要 1 万天左右才能破解,所以,放弃吧。
另外,我不清楚如果用硬件加速计算以后会怎么样,我的时间是按照 CPU 时间算的。
补充,我自己测试的结果:基于 openssl 1.0.1g 的 AES-256-ECB,外层封装 XTS 算法,
每 512 字节换一次 key
,16 字节为一组,一秒钟处理数据约 40MB/s,C 语言代码,gcc 编译,运行环境 debian,CPU 是 I7-3770,主频 3.4G,单线程,无硬件优化。
我这个配置算是很高的配置,如果用显卡加速,加上各种优化,多线程一起跑,速度应该能提高 1-2 个数量级,但我觉得每秒处理速度要超过 1GB 还是有困难的,那么一秒钟能跑 200 万个密码,如果跑字典的话,这个速度足够了,但就看题主自己的密码有多复杂了,万一字典里没有,那就没办法了。
另外,有人说的用 CRC 校验,是个不错的思路。