900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 安全散列算法

安全散列算法

时间:2020-09-02 09:00:49

相关推荐

安全散列算法

1.简介

美国国家标准与技术学会和NSA开发了安全散列算法(Secure Hash Algorithm,SHA)。SHA可以处理长度在2642^{64}264以内的任何输入消息。SHA的输出是消息摘要,长度为160位(比MD5的消息摘要多32位)。SHA中的安全利用了两个特性,在计算上保证下列情况的不可行:

(1)根据消息摘要取得初始消息;

(2)寻找两个消息,产生相同消息摘要。

2.SHA工作原理

2.1 填充

和MD5一样,SHA的第一步是在初始消息末尾进行填充,使消息长度为512的倍数少64位。和MD5一样,填充总是增加,即使消息长度已经是比512的倍数少64。

2.2 添加长度

计算不包括填充的消息长度,用64位块加到填充后面。

2.3 将输入分为512位块

将输入分为512位块,这些块称为消息摘要处理逻辑的输入。

2.4 初始化链接变量

初始化5个链接变量A~ E,记住,MD5中为4个32位的链接变量,总长度为128位,中间结果和最终结果存放在这些链接变量构成的组合寄存器abcd中。SHA要产生的消息摘要为160位,因此要有5个链接变量,总长度为160位。SHA中变量A到D的值与MD5中相同,E初始化的C3 D2 E1 F0(十六进制)。

2.5 处理块

第一步:将链接变量A~ E复制到变量a~ e中,a~ e组合成寄存器abcde,存储中间结果和最终结果。

第二步:将当前512位块分解为16个子块,每个子块为32位。

第三步:SHA共4轮,每一轮20步。每一轮的3个输入为当前512位块、寄存器abcde和常量K[],其中t为0~ 79。然后用SHA算法步骤更新寄存器abcde内容。另外,MD5中的t定义64个常量,而这里的K[]之定义4个常量,每一轮用一个。K[]的值如下表所示:

第四步:SHA共4轮,每轮20次迭代,共80次。一次SHA迭代的逻辑操作如下图所示:

一次SHA迭代的数学表示如下:

abcde=(e+ProcessP+S5(a)+W[]+k[]),a,S30(b),c,dabcde=(e+Process P +S^5(a)+W[]+k[]),a,S^{30}(b),c,dabcde=(e+ProcessP+S5(a)+W[]+k[]),a,S30(b),c,d

其中abcde位5个变量a、b、c、d、e构成的寄存器;Process P(处理P)位逻辑操作;StS^{t}St

将32位子块循环左移t位;W[]从当前32位子块求出的32位值;k[]为5个常量之一。

注意,它与MD5相似,只是有小改动,使SHA比MD5更复杂。下面介绍处理P和W[]的含义,下表显示了每一轮的SHA-1中的处理P:

W[t]的值计算如下:

对W的前16个字(t=0~15),输入消息子块M[t]的内容变成W[t]内容,即把输入消息M的前16块复制到W。W的其余值用下列方程求出:

W[t]=S1(W[t−16]XORW[t−14]XORW[t−8]XORT[t−3])W[t]=S^1(W[t-16]\quad XOR\quad W[t-14] \quad XOR\quad W[t-8] \quad XOR\quad T[t-3])W[t]=S1(W[t−16]XORW[t−14]XORW[t−8]XORT[t−3])

3.比较MD5与SHA-1

MD5与SHA-1都基于MD4算法,因此可以进行比较,两者的差别如下表所示:

4.SHA-1的安全性

NIST寻找了更安全的SHA版本,出现了如下版本:2002年,NIST在标准文档FIPS 1802中提供了另一个新的SHA版本,称为SHA-256、SHA-384和SHA-512,其后面的数字表示为消息摘要的长度(以位为单位),下表归纳了不同的SHA版本:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
扩展阅读