关于哈希(散列)算法的8个问题

2020-01-16  本文已影响0人  齐鑫

散列表(hash)是什么?

散列技术实在记录的存储位置和它的关键字之间建立一个确定的对应关系f,是的每个关键字key对应一个存储位置f(key)。

我们把这种对应关系f称为散列函数,又称为哈希函数。按这个思路,采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或者哈希表。那么关键字对应的记录存储位置我们称为散列地址。

散列技术最适合的求解问题是查找与给定值相等的记录。对于查找来说,简化了比较过程,效率就会大大提高。

我们时常会碰到两个关键字key1,key2,但是f(key1)!=f(key2),这种现象我们称之为冲突,并把key1和key2称为散列函数的同义词。

如何构造散列表?

这样的散列函数优点就是简单、均匀,也不会产生冲突。但问题是这需要事先知道关键字的分布取情况,适合查找表较小且连续的情况。由于这样的限制,在现实应用中,此方法虽然简单,但却不常用。

显然,本方法关键就在于选取核实的p,p如果选的不好,就容易产生同义词。

根据经验,若散列表长为m,通常p为小于或等于表长的最小指数或不包含小于20质因子的合数。

如何处理散列表冲突?

散列表查找如何实现?

1.定义散列表结构并初始化散列表
2.定义散列函数
3.插入散列表:插入关键字时,先算出散列地址,如果当前地址部位空关键字,则说明有冲突,此时使用适当方法解决冲突
4.通过散列表查找

什么是哈希算法?

就是以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节相关,而且难以找到逆向规律。

哈希算法的应用场景?

哈希算法的特点?

哈希算法在密码学中如何应用?

登录要输入密码,如果明文保存密码,很容易被破解,那么就是用hash算法,生成一个密码的签名,后台保存这个签名。由于hash算法不可逆,黑客拿到这个签名也没有用处,在你输入密码后,后台重新计算一下hash值,与后台保存的hash值对比,相同则允许登

上一篇 下一篇

猜你喜欢

热点阅读