哈希函数
哈希函数又叫散列函数,哈希函数的输入域可以是非常大的范围,比如任意字符串,但是输出域是固定范围,假设为s。
哈希函数的性质:
- 典型的哈希函数都拥有无限的输入值域。
- 输入值相同时,返回值相同,通常将返回值称为哈希值。
- 输入值不同时,返回值可能相同,也可能不同。
- 不同输入值得到的哈希值,整体均匀的分布在输出域s上。(重要)
性质1,2,3是哈希函数的基础,性质4是评价一个哈希函数的关键。不同输入得到的哈希值越均匀的分布在s上,哈希值被认为越优秀。并且这种均匀分布是与输入值出现的规律无关的。
比如“aaa1”,“aaa2”,“aaa3”,虽然相似,但计算出的哈希值相差巨大。
如果将所有的哈希值对m取余的话,所有取余后的值也会均匀分布在 0 , … , m − 1 0,\ldots,m-1 0,…,m−1上。
MD5算法与SHA1算法都是经典的哈希函数算法。