首页 理论教育 SHA-1压缩函数简析

SHA-1压缩函数简析

时间:2023-07-02 理论教育 版权反馈
【摘要】:图6-8 SHA-1压缩函数中的一步迭代运算在SHA-1压缩函数的每轮处理过程中有一个加法常量Kt,其中0≤t≤79表示迭代的步数。SHA-1将输入消息块的16个字扩展成80个字以供压缩函数使用,使得寻找具有相同压缩值的不同的消息块极为困难。

SHA-1压缩函数简析

压缩函数的4轮处理过程结构一样,每一轮由20步迭代组成(如图6-7)但所用的基本逻辑函数不同,分别表示为f1f2f3f4。每轮的输入为当前处理的消息块mj和缓冲区的当前值ABCDE,输出仍放在缓冲区以替代ABCDE的原有值,第4轮的输出(即第80步迭代的输出)再与第1轮的输入按模232相加,相加的结果即为压缩函数HSHA的输出。

在SHA-1压缩函数80步迭代中,每一步迭代运算过程如图6-8所示,每一步迭代运算的形式为

ABCDE)←((E+ftBCD)+(A<<5)+Wt+Kt),A,(B<<30),CD

分开表述为

A=E+ftBCD)+(A<<5)+Wt+Kt

B=A

C=B<<30

D=C

E=D

其中

ABCDE为缓冲区的5个字;

t是迭代的步数(0≤t≤79);

ftBCD)是第t步迭代使用的基本逻辑函数;

<<S为循环左移S位;

Wt是由当前512bit的消息块导出的一个32bit的字;

Kt是加法常量;

+是模232加法。(www.xing528.com)

逻辑函数ftBCD)的输入为3个32bit的字BCD,输出是一个32bit的字,其中的运算为逐比特逻辑运算。逻辑函数的定义如下:

978-7-111-37285-1-Chapter06-10.jpg

在逻辑函数中出现的符号定义如下:

XYXY进行逻辑与运算。

XYXY进行逻辑或运算。

XYXY进行逻辑异或运算。

978-7-111-37285-1-Chapter06-11.jpgX的逻辑补运算。

978-7-111-37285-1-Chapter06-12.jpg

图6-8 SHA-1压缩函数中的一步迭代运算

在SHA-1压缩函数的每轮处理过程中有一个加法常量Kt,其中0≤t≤79表示迭代的步数。80个常量中实际上只有4个不同取值,它们是

978-7-111-37285-1-Chapter06-13.jpg

Wt(32bit)由当前的输入消息块mj(512bit)导出。W0W1,…,W15这前16个值直接取输入消息块的16个相应的字,剩下的值W16W17,…,W79取法如图6-9所示。SHA-1将输入消息块的16个字扩展成80个字以供压缩函数使用,使得寻找具有相同压缩值的不同的消息块极为困难。

978-7-111-37285-1-Chapter06-14.jpg

图6-9 SHA-1压缩函数中的一步迭代运算

mj=M0M1‖…‖M15,其中每一个消息子块Mi都是长度为32bit的字。用以下方法将消息块从16个32bit的字变成80个32bit的字。

978-7-111-37285-1-Chapter06-15.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈