构造Hash函数的方法主要有基于公钥密码的构造方法、基于分组密码的构造方法和直接构造法三种。
1.基于公钥密码的构造方法
设明文M=m1m2…mn,以公钥密码体制为基础,使用公钥PK以及初始变量IV,通过CBC(密文分组链接模式)对消息分组m1,m2,…,mn进行加密,得到密文分组c1,c2,…,cn。将输出的最后一个密文分组cn作为Hash函数的输出值H(M),如图6-1所示。
图6-1 基于公钥密码的CBC模式构造Hash函数
虽然在合理的假设下,可以证明这类Hash函数是安全的,但因为其计算效率太低,所以这一类Hash函数并没有什么实用价值。
2.基于分组密码的构造方法
设明文M=m1m2…mn,使用分组密码体制的CBC模式,输入初始变量IV和对称密钥k,对消息分组m1,m2,…,mn进行加密,得到密文分组c1,c2,…,cn。将输出的最后一个密文分组cn作为Hash函数的输出值H(M),如图6-2所示。(www.xing528.com)
通常,也可以使用CFB(密文反馈模式)或KBC(密钥链接模式)加密产生消息摘要。如果使用KBC模式时,可以把明文分组m1加密得到的密文分组c1作为密钥去对m2加密,用得到的结果c2作为密钥,再对m3加密,如此下去,直到最后得到mn的密文cn,则cn就是所求得的消息摘要,如图6-3所示。
图6-3 基于分组密码的KBC模式构造Hash函数
基于分组密码的CBC、CFB和KBC工作模式的Hash函数中,密钥k不能公开。如果密钥k公开,则会使得攻击者十分容易构造消息碰撞。
3.直接构造Hash函数
直接构造Hash函数并不基于任何假设和密码体制,它是通过直接构造复杂的非线性关系达到单向性要求来设计单向Hash函数。典型的这类Hash函数有MD4、MD5、SHA-1、SHA-256等算法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。