有关rar文件异或加密的问题

最近在网上看到有人解释rar文件的加密算法,描述如下:

二、加密“压缩完的数据段”的流程
  1、获取密钥:
    将明文的密码与Salt一起,通过HASH算法,生成两个16字节的密钥。(一个是KEY(AES算法的参数),一个是initVector)  
  2、以Key和initVector来加密压缩数据:
    这里,是一个循环加密的结构,每16字节作为一个块,进行加密(这可能正是为什么加密完的文件长度总为16倍数的原因)。加密采用AES算法(RAR采用的是AES的rijndael的标准应用)。这里注意:AES加密前,有一个异或运算,是先将每16字节块与上一个16字节块加密结果进行异或,然后再进行AES算法的。

问题来了——与前一块数据的加密结果异或真的没问题?原文说做异或的目的是为了防范AES密码被破解的情况,但按这样的处理方法,只要破解了AES就可以解出除了最开头16字节块之外的其它压缩数据。难道不应该是每个16字节块直接与上一个16字节块的原始数据做异或,而最开头的块与initVector异或?

推荐  (0) | 1人关注关注
1个答案
8 0

方弦科学松鼠会成员,信息学硕士生

2014-12-20 20:25

这种机制叫AES-CBC,不是为了防范AES的破解(AES破解的话,无论RAR自己加密玩出什么花也照样被破解……),而是因为AES是block cipher,非得要做这类操作才能加密一大块的东西,而CBC这个模式有一些优势。具体参见:

http://zh.wikipedia.org/zh/%E5%9D%97%E5%AF%86%E7%A0%81%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区