发布时间:2025-10-05 17:52:45 点击量:
HASH GAME - Online Skill Game GET 300
密码学Hash函数分析与应用 第一章Hash函数的研究现在状况 通过阅读〔密码编码学与网络安全——原理与理论〔第五版〕〕的相关章节及从网上以及图书馆查阅相关资料,能够了解到,hash函数的设计已经初具规模,从1989由Rivest等人设计了MD2算法之后,又设计了MD4以及MD5,固然速度会稍慢些,但是安全性逐步提升。再到1992、1993年RIPEMD以及美国RSA又对MD4、MD5进行改良,提出了SHA系列算法,密码学Hash函数走上了正轨,RSA公司对SHA-0,SHA-1的设计、2002年美国NIST对SHA-1又进行改良增长了输出长度,构成了SHA-2〔包含SHA-512、SHA-384等算法〕算法,再到2009年SHA-3的问世,密码学Hash函数在不断的发展强大,安全性也逐步提升。 第二章Hash函数的定义 Hash函数是一类能够把输入的任意长度的消息或数据块x〔又叫做预映射,pre-image〕,通过一定的散列算法进行映射,变成固定长度的输出值Hash值h=H〔x〕,我们能够把这一类输出的值h叫做散列值或者是消息内容摘要。 当前,根据Hash函数算法的设计方法的不同通常能够分为三种类型:标准型、基于模运算性、基于分组加密型三种类型。 1.标准型的Hash函数 标准Hash函数一般来说能够分成两部分,一部分是MD系列的,另一部分是SHA-系列的。 从1989年开始由Rivest等人设计了MD2的算法之后,又先后的设计了MD4还有MD5等算法,固然后者在运行速度可能稍慢些,但是安全性能在逐步提升,以上为MD系列Hash算法。 再到1992、1993年以后RIPEMD以及美国RSA又对MD4、MD5进行了改良,提出SHA系列算法之后,密码学Hash函数才逐步走上了正轨,RSA对SHA-0,SHA-1进行了设计、2002年美国NIST对SHA-1算法加以改良增长了输出长度,构成了SHA-2算法〔包含SHA-512、SHA-384、SHA-256等算法〕,再到2009年SHA-3的问世,这些算法都是SHA-系列Hash函数。 2.基于分组机密型的Hash函数 基于分组密码来构造Hash函数具有一定的局限性,它不能使用分组密码的组件一边来设计Hash函数,而是仅能靠分组密码的一些输入输出的形式进行变换来构造一些压缩函数。利用分组密码来构造Hash函数是先对原始消息〔单位为m〕进行填充,这样进行填充后的消息的总长度就是每一个分组长度〔每一个分组的长度为n〕的倍数,假设原始消息被分为了t组,Mi〔i=1,2…t〕,把h0设为初始向量,那么hi=f〔Mi,Hi-1〕其中i=1,2…t,Ek是一组分组加密算法,其中消息长度为n,k为密钥分组,H〔m〕=Ht。 其中下面为已经证明了的安全Hash函数的一些方案: 1979年:Matyas-meyer-Oseas的hi=Eh〔i-1〕〔mi〕⊕mi 1989年:Miyaguchi-preneal的hi=Eh〔i-1〕〔mi〕⊕mi⊕h〔i-1〕 1979年:Davis-Meyer的hi=Eh〔i-1〕〔mi〕⊕h〔i-1〕 利用分组密码来构造Hash函数有它的优缺点,其中优点是它的发展已经很成熟,设计效果也比较好,但是它的缺点却是效率低,由于原始消息要先转化成密钥,密钥一般又是不变的,所以它的运行时间相对长而且安全性也不高。 3.基于模运算型的Hash函数 此类Hash函数一般是要用到bit的一些逻辑性的运算,如:与、或、异或〔⊕〕等运算符,它是基于一些比较困难的数学问题,比方:离散数学的问题,因子分解的问题,背包的问题等进行Hash函数的构造。这类的运算效率很低而且安全性对数学问题能否困难依靠太大