Hash:
-
一般翻译做
散列
、杂凑
,或音译为哈希
,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。 -
这种转换是一种
压缩映射
,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
简介
-
Hash算法可以将一个数据转换为一个标志,这个标志和源数据的每一个字节都有十分紧密的关系。Hash算法还具有一个特点,就是很难找到逆向规律。
-
Hash算法
是一个广义的算法,也可以认为是一种思想
,使用Hash算法可以提高存储空间的利用率,可以提高数据的查询效率,也可以做数字签名来保障数据传递的安全性。所以Hash算法被广泛地应用在互联网应用中。 -
Hash算法也被称为
散列算法
,Hash算法虽然被称为算法,但实际上它更像是一种思想。Hash算法没有一个固定的公式,只要符合散列思想的算法都可以被称为是Hash算法。
例子:
你很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是你到学校学生处找人,
学生处的工作人员可能会拿出学生名单,一个一个的查找,最终告诉你,学校没这个人,
并说张三丰几百年前就已经在武当山作古了。
可如果你找对了人,比如在操场上找那些爱运动的同学,人家会告诉你,"哦,你找张三丰呀,
有有有,我带你去。于是他把你带到了体育馆内,并告诉你,那个教大家打太极的小伙子就是张三丰',
原来"张三丰.是因为他太极拳打得好而得到的外号。学生处的老师找张三丰,那就是顺序表查找,
依赖的是姓名关键字的比较。而通过爱好运动的同学询问时,没有遍历,没有比较
,
就凭他们"欲找太极'张三丰',必在体育馆当中"的经验,直接告诉你位置
。
HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做HASH值. 也可以说,通俗的说hash就是找到一种数据内容和数据存放地址之间的映射关系。
hash表
Hash表
也称散列表
,也有直接译作哈希表
,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。
这个源于Hash表设计的特殊性,它采用了函数映射的思想
将记录的存储位置
与记录的关键字
关联起来,从而能够很快速地进行查找。
对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称碰撞。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。
网友评论