【文章】Winrar 压缩软件的加密算法 - AES

  • A+
所属分类:lcx

    转自:http://t00ls.net/thread-13721-1-1.html,原作者:xlk111

    昨天偶然发现 Winrar 压缩软件加密算法碰撞口令后(详情见这里:https://lcx.cc/post/1026/),又到处搜集看了些资料,又看了看 Winrar 的程序。

    Winrar 压缩软件用的核心加密算法是AES,加密时用的CBC模式,密钥长度16字节(128比特),密钥和初始化向量由用户口令经符合 PKCs #5 的复杂变化生成,其生成时的核心是SHA1。

既用户输入的口令为 PW1,密钥和初始化向量的生成过程如下:

    1、RE1=Unicode(PW1),如:Unicode('A')=0x0041;注意intel系列的处理器是littleendian,低位在前。
    2、PW2=Union(RE1||Salt),简单的串接。
    3、M=Ex(PW2,int);其中int为固定值,对PW2做固定int次循环扩展。
    4、Key=Get(SHA1(M),128),IV=LASTBYTE(SHA1(M));

加密:
    AES-CBC:
    C(0)=IV;
    C(i)=AES(KEY,C(i-1)^P(i));

解密:
    P(i)=C(i-1)^AES(C(i))

需要注意的是Salt生成算法:(这个是看雪的天易love写的)

    1、由 SystemTime 得到 FileTime;
    2、分别对 FileTime 的两个 DWORD 进行 hash_process;
    3、hash_final 后得到的 digest 的最前面的两个 DWORD 就是 salt。

 

文章来源于lcx.cc:【文章】Winrar 压缩软件的加密算法 - AES

相关推荐: python爬取所有厂商url&python爬取Google搜索结果产生的猥琐想法

一直有这么一个想法。当得到某0day,我怎样才能最快知道在某大厂商的任意子域名、任意端口下是否存在此漏洞。 于是猥琐的想法就产生了,首先得到乌云所有厂商的url,然后再逐个得到所有厂商的子域名,然后就是端口信息,cms静态文件以及各种包含某特征的url,如ac…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: