发布网友 发布时间:2022-04-23 02:36
共1个回答
热心网友 时间:2023-10-12 00:16
winrar 解压包括解密代码是开源的,且免费。 主页下载,完全不需要闭门造车琢磨。
rarlabs主页提供unrar的源代码unrarsrc-3.x.x.tar.gz,最新的unrarsrc-4.0.7.tar.gz
参看 crypt.cpp, void CryptData::SetCryptKeys(...)
把这个函数读了就能得出结论:
1. 加密采用的AES, 目前不存在已知明文攻击。
2. 密钥的初始化,rar使用了0x40000次(约26万次)sha1 hash来初始化aes。这个特性非常重要,使得使得穷举原始的密码变得非常慢,计算量相当于单次SHA1的26万倍。即使现在PC的cpu每秒能做2600万次sha1 hash_process, 每秒也只能穷举100个密码。超过10位以上的复杂密码,数年以内穷举几乎无法完成。
(Truecrypt也有这个策略, get_pkcs5_iteration_count()是SHA 2000次,比rar初始化密钥快131倍 )
而且rar判断解压正确,是需要计算解压后数据的crc的,解压更耗时。如果密码设成10位以上足够随机的字符,按照95个printable char设置,密钥空间是95^10以上。按照现在PC的速度,需要1亿年以上才能穷举出来。
当然PC会越来越快,但是如果破解的代价远远大于文件本身的代价,破解就没什么意义。
如果花10万元电费,采用超级计算机,来破解价值1万元的文档,没人会干这不值当的事情。
如果密码比较短,或者用于个人回忆密码,记得部分字符,可以试一试穷举。