哈希算法的查找性能剖析:
散列表的查找过程基本上和造表过程雷同。一些关键码可通过散列函数转换的地址间接找到,另一些关键码在散列函数失去的地址上产生了抵触,须要按解决抵触的办法进行查找。哈希游戏开发找l99掂z465薇o854。
在介绍的三种解决抵触的办法中,产生抵触后的查找依然是给定值与关键码进行比拟的过程。所以,对散列表查找效率的量度,仍然用均匀查找长度来掂量。
查找过程中,关键码的比拟次数,取决于产生抵触的多少,产生的抵触少,查找效率就高,产生的抵触多,查找效率就低。因而,影响产生抵触多少的因素,也就是影响查找效率的因素。影响产生抵触多少有以下三个因素:
1.散列函数是否平均;
2.解决抵触的办法;
3.散列表的装填因子。
散列表的装填因子定义为:= 填入表中的元素个数/散列表的长度
是散列表装满水平的标记因子。因为表长是定值,与“填入表中的元素个数”成正比,所以,越大,填入表中的元素较多,产生抵触的可能性就越大;越小,填入表中的元素较少,产生抵触的可能性就越小。
实际上,散列表的均匀查找长度是装填因子的函数,只是不同解决抵触的办法有不同的函数。
理解了hash根本定义,就不能不提到一些驰名的hash算法,MD5和SHA-1能够说是利用最宽泛的Hash算法,而它们都是以MD4为根底设计的。
罕用hash算法的介绍:
(1)MD4
MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest(音讯摘要) 的缩写。它实用在32位字长的处理器上用高速软件实现——它是基于 32位操作数的位操作来实现的。
(2)MD5
MD5(RFC 1321)是 Rivest 于1991年对MD4的改良版本。它对输出仍以512位分组,其输入是4个32位字的级联,与 MD4 雷同。MD5比MD4来得简单,并且速度较之要慢一点,但更平安,在抗剖析和抗差分方面体现更好。
(3)SHA-1及其他
SHA1是由NIST NSA设计为同DSA一起应用的,它对长度小于264的输出,产生长度为160bit的散列值,因而抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4雷同原理,并且模拟了该算法。