哈希值是怎么生成的?
一、哈希值生成
哈希值生成是:通过一定的哈希算法(典型的有MD5,SHA-1等),将一段较长的数据映射为较短小的数据,这段小数据就是大数据的哈希值。他有这样一个特点,他是少数的。
一旦大数据发生了变化,哪怕是一个微小的变化,他的哈希值也会发生变化。另外一方面,既然是DNA,那就保证了没有两个数据的哈希值是完全相同的。正是因为这样的特点,它常常用来判断两个文件是否相同。比如,从网络上下载某个文件,只要把这个文件原来的哈希值同下载后得到的文件的哈希值进行对比,如果相同,则表示两个文件完全一致,下载过程没有损坏文件。而如果不一致,则表明下载得到的文件跟原来的文件不同,文件在下载过程中受到了损坏。
延伸阅读:
二、常用HASH函数
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。常用Hash函数有:
1.直接寻址法。取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)
2.数字分析法。分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。
3.平方取中法。取关键字平方后的中间几位作为散列地址。
4.折叠法。将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。
5.随机数法。选择一随机函数,取关键字作为随机函数的种子生成随机值作为散列地址,通常用于关键字长度不同的场合。
6.除留余数法。取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key MOD p,p<=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对p的选择很重要,一般取素数或m,若p选的不好,容易产生碰撞。

猜你喜欢LIKE
相关推荐HOT
更多>>
为什么在中断里不能sleep?
一、在中断里不能sleep的原因“为什么在中断里不能sleep”,即“为什么在Linux里,ISR被设计成不能睡眠”。sleep会导致call scheduler以选择另...详情>>
2023-10-14 20:44:46
Jupyter Notebook为什么是现代Python的必学技术?
1、整合所有资源在软件开发过程中,频繁地切换窗口会影响开发效率。举个例子,假设你需要切换窗口去看一些文档,再切换窗口去用另一个工具画图...详情>>
2023-10-14 20:11:17
Python中is和==的区别?
一、Python中is和==的区别Python 中的 is 和 == 的主要区别是== 操作符比较两个对象的值是否相等,即比较它们所包含的数据是否相同;is 操作符...详情>>
2023-10-14 18:11:35
mac任务管理器快捷键是什么?
一、mac任务管理器快捷键在Mac OS X操作系统中,任务管理器被称为活动监视器(Activity Monitor),它允许用户查看和管理正在运行的进程和资源...详情>>
2023-10-14 17:46:41热门推荐
Python10行以内代码能有什么高端操作?
沸html form标签的action属性是什么?
热TCP、UDP的区别是什么,两者在什么时候使用?
热C++中引用和指针有哪些区别?
新epoll、poll、select有哪些区别?
为什么我们需要Laravel IoC容器?
为什么在中断里不能sleep?
Jupyter Notebook为什么是现代Python的必学技术?
Promise是什么?
Python有哪些优势?
项目财务管理包括什么?
Python中is和==的区别?
mac任务管理器快捷键是什么?
Java开发为什么要用IoC和AOP?
技术干货






