转载自一个已经丢失链接,转载原文章的文章图片不可见,但是在手机端又可以点击查看,这里整理出来方便网页端浏览
Hash算法是一种数字摘要算法,它能将不定长度的二进制数据集给映射到一个较短的二进制长度数据集,常见的MD5算法就是一种Hash算法,通过MD5算法可对任何数据生成数字摘要。而实现了Hash算法的函数我们叫她Hash函数。Hash函数有以下几点特征。
相同的数据进行Hash运算,得到的结果一定相同。HashFunc(key1) == HashFunc(key1)
不同的数据进行Hash运算,其结果也可能会相同,( Hash会产生碰撞)。key1 != key2 => HashFunc(key1) == HashFunc(key2).
Hash运算时不可逆的,不能由key获取原始的数据。key1 => hashCode但是hashCode ==> key1。
下图就是Hash函数的一个简单说明,任意长度的数据通过HashFunc映射到一个较短的数据集中。