2022年2022年经典哈希算法new .pdf
《2022年2022年经典哈希算法new .pdf》由会员分享,可在线阅读,更多相关《2022年2022年经典哈希算法new .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、被逼的,发个技术文章吧(几种经典的hash 算法 ) 注:最近因为在做和hash 有关的题目,感到很纠结。虽然上学期数据结构学过,但是当时觉得 hash 没什么用,所以没有认真学后悔啊现在恶补一下计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人类” 的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函数都可以被认为是单向函数的逼近。Hash 函数(或者成为散列函数)也可以看成是单向函数的一个逼近。即它接近于满足单向函数
2、的定义。Hash函数还有另外的含义。实际中的Hash 函数是指把一个大范围映射到一个小范围。把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存。除此以外,Hash函数往往应用于查找上。所以,在考虑使用Hash 函数之前,需要明白它的几个限制:1. Hash 的主要原理就是把大范围映射到小范围;所以,你输入的实际值的个数必须和小范围相当或者比它更小。不然冲突就会很多。2. 由于 Hash 逼近单向函数;所以,你可以用它来对数据进行加密。3. 不同的应用对Hash 函数有着不同的要求;比如,用于加密的Hash 函数主要考虑它和单项函数的差距,而用于查找的Hash 函数主要考虑它映射
3、到小范围的冲突率。应用于加密的Hash 函数已经探讨过太多了,在作者的博客里面有更详细的介绍。所以,本文只探讨用于查找的Hash 函数。Hash 函数应用的主要对象是数组(比如,字符串),而其目标一般是一个int 类型。以下我们都按照这种方式来说明。一般的说, Hash 函数可以简单的划分为如下几类:1. 加法 Hash;2. 位运算 Hash;3. 乘法 Hash;4. 除法 Hash;5. 查表 Hash;6. 混合 Hash;下面详细的介绍以上各种方式在实际中的运用。一加法 Hash 所谓的加法Hash 就是把输入元素一个一个的加起来构成最后的结果。标准的加法Hash的构造如下:stat
4、icintadditiveHash(String key, int prime) int hash, i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - for (hash = key.length(), i = 0; ikey.length(); i+) hash += key.charAt(i); return (hash % prime); 这里的 prime 是任意的质数,看得出,结果的值域为0,prime-1 。二位
5、运算 Hash 这类型 Hash 函数通过利用各种位运算(常见的是移位和异或)来充分的混合输入元素。比如,标准的旋转Hash的构造如下:staticintrotatingHash(String key, int prime) int hash, i; for (hash=key.length(), i=0; ikey.length(); +i) hash = (hash28)key.charAt(i); return (hash % prime); 先移位,然后再进行各种位运算是这种类型Hash 函数的主要特点。比如,以上的那段计算hash 的代码还可以有如下几种变形:1. hash = (h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年经典哈希算法new 2022 经典 算法 new
限制150内