文章横幅PC版
文章横幅iPad版
文章横幅手机版

单项散列函数的设计方法

TIME:2018-10-23 16:22  click: 217 次 来源: 未知

单向散列函数的原理较简单,同时因它也不要求可逆,因此,设计自由度一般比较大,基本的设计方法有三种。

1.使用公开密钥密码算法

一般能以CBC模式用公开密钥算法加密消息,并得到最后一个密文分组当做散列值。

若丢掉用户的保密密钥,此时的散列值会不能解密,即它达到了散列函数的单向性要求。

尽管在恰当的假定下,可表明此类散列函数是安全的,不过通常情况下其计算速度特别慢。此类散列函数不实用。

2.使用对称分组算法

用对称分组密码算法的CBC或CFB模式得到散列值。它用个不变的密钥加密消息,再让最后的密文分组作散列值进行输出。这时,若分组算法是安全的,则单向函数也将是安全的。

另外,还可将消息当做密钥,而把上一个分组拿到的散列值作分组算法的输入,用类似CBC模式的方法加密,最后得到的密文分组作散列值输出。设消息一共含N个分组m1,m2,…,mN,用h,代表到第i个分组时的散列值,h代表最后的散列输出。则可表述如下。

h0=IV

hi=Emi(hi-1)

h=hN

其中,IV是初始向量。

这类设计已经提出来一些方案,如Quisquater-Girault算法、MDC2与MDC4、GOST散列函数等。

3.直接设计单向散列函数

此类单向散列函数不基于随意哪个假定与密码体制,它由直接构造复杂的非线性关系实现单向性要求。这类算法典型的有:MD2、MD4、MD5、SHA-1、PIPE-MD和HAVAL等。现今,直接设计单向散列函数的措施被普遍关注,是较流行的一种设计方法。

上一篇:椭圆曲线密码体制的优点 下一篇:密钥管理技术的发展