rar密码吧 关注:55贴子:126
  • 2回复贴,共1

Rar文件生成的流程

只看楼主收藏回复

一、Rar文件生成的流程。
Winrar加密文件时,总的分两个步骤:
1:先把源文件压缩,压成一段数据段。
2:再将压缩完的数据段加密。
对于同一个源文件来说,不进行加密,压缩完,其rar文件中的数据段是一模一样的。但是如果对同一个源文件来说,即使使用同一个密码,加密完rar文件中的数据段是不一样的,这是由于加密的密钥是依赖于一个Salt(8个字节的密钥,用来加密时使用,存放在rar文件头中里)
所以要解密rar加密文件关键在于数据解密这一步,那我们接下来研究一下如何加密的。
二、加密“压缩完的数据段”的流程
1、获取密钥:
将明文的密码与Salt一起,通过HASH算法,生成两个16字节的密钥。(一个是KEY(AES算法的参数),一个是initVector)
2、以Key和initVector来加密压缩数据:
这里,是一个循环加密的结构,每16字节作为一个块,进行加密(这可能正是为什么加密完的文件长度总为16倍数的原因)。加密采用AES算法(RAR采用的是AES的rijndael的标准应用)。这里注意:AES加密前,有一个异或运算,是先将每16字节块与上一个16字节块加密结果进行异或,然后再进行AES算法的。我用一个简单的示意代码看说明:


IP属地:浙江1楼2014-08-18 08:37回复
    能算出rar密码的长度来吗?至少知道是多少位的密码啊。


    IP属地:河北2楼2017-02-10 00:41
    回复
      The password encryption in ZIP/ARJ/RAR/ACE is very strong, and if the password is long enough and well selected, there is no way to recover it in a reasonable time. In most cases, only brute-force and dictionary attacks are available.


      IP属地:浙江3楼2017-04-01 14:09
      回复