Hash算法
1.定义
Hash :散列,通过关于键值(key)的函数,将数据映射到内存存储中一个位置来访问。这个过程叫做Hash,这个映射函数称做散列函数,存放记录的数组称做散列表(Hash Table),又叫哈希表。
简单地说,它是密码学中的一个重要的函数,一般以
表示。这个函数可以将任意一段数据(一般称这段数据为“消息”)压缩成固定长度的字符串(一般称输出的字符串为“摘要”)。哈希函数需要满足下述条件:
确定性:哈希函数的算法是确定性算法,算法执行过程不引入任何随机量。这意味着相同消息的哈希结果一定相同。
高效性:给定任意一个消息m,可以快速计算
目标抗碰撞性:给定任意一个消息m1,很难找到另一个消息m2,使得
广义抗碰撞性:很难找到两个消息m0不等于m1的情况下,使得
2.优点
先分类,再查找,通过计算,缩小范围,加快查找速度
3.Hash的作用
数字签名:给数据打指纹
比如我们下载一个文件,文件的下载过程中会经过很多网络服务器、路由器的中转,如何保证这个文件就是我们所需要的呢?我们不可能去一一检测这个文件的每个字节,也不能简单地利用文件名、文件大小这些极容易伪装的信息,这时候,我们就需要一种指纹一样的标志来检查文件的可靠性,这种指纹就是我们现在所用的Hash算法(也叫散列算法)。
密码存储
在用户进