Hash函数MD5攻击技术研究(11)
时间:2025-07-11
时间:2025-07-11
Hash函数MD5攻击技术研究
8Hash函数MD5攻击技术研究
填充(1至tJ512bit)消息长度(Kmod264)
…匠…互卜512bit斗41---512bit—'
128
—-/-’{
IVcVqCVLl
图2.1Hash函数一般结构
消息处理过程如下:
1.对消息的填充。对消息的填充,使得其比特长在模512下为448,即填充后消息的长度为512的某一倍数减去64,留出64比特以备第2步使用。步骤1是必须的,即使消息长度已经满足要求,仍需要填充。例如,消息长为448比特,则需要填充512比特,使其长度变为960,因此填充的比特数大于等于1,小于等于512。填充的方法是确定的:第1位为1,后面的位都为O.
2.附加消息的长度。用步骤1留出的64比特以little.endian方式来表示消息被填充前的长度。如果消息的长度大于264,则以2“为模数取模。
Little.endian方式是指数据的最低有效字节(byte)(或者最低有效位)的优先顺序存储数据,即将最低有效字节(或者最低有效位)存于第地址字节(或者位)。相反的存储方式称之为big-endian方式。
前两步执行完后,消息长度为512的倍数(设为L倍),因此可将消息表示为分组长为512比特的一系列分组KX…l:,而每一分组有可表示为16个32比特长的字,这样消息中的总字数为N=Lxl6,因此消息又可按字表示为M[0,1,…N.1】。
3.对MD缓冲区初始化。算法使用128比特长的缓冲区以存储中间结果和最终Hash值,缓冲区可以表示为4个32比特长的寄存器似,B,C,D),每个寄存器都以little.endian方式存储数据,其初值(以存储方式)为A=01234567,B=89ABCDEF,C=FEDcBA98,D=76543210,实际上为A=67452301,B=EFCDAB89,C=98BADCFE,D=10325476。
4.以分组为单位对消息进行处理。每一分组K(q=0,…,L-1)都经一压缩函数处理,压缩函数是整个MD5算法的核心,共有4个不同的布尔函数,分别为F函数、G函数、H函数、l函数。每一轮的输入为当前处理的消息分组yq和缓冲区当前值,输出仍放在缓冲区中以产生新的A、B、C、D。每一轮处理还需要加上
上一篇:第二章_多项式练习