一个优秀的哈希算法应该具备以下特征:
1.低碰撞率,即尽可能减少哈希值重复的情况,这样可以保证哈希表的性能;
2.高效性,计算哈希值的时间复杂度应该尽可能低;
3.分布均匀,哈希算法应该尽可能让元素在哈希表中均匀分布,避免某一区域哈希值过于集中,从而影响哈希表的性能;
4.安全性,哈希算法应该具有防止碰撞攻击的能力,如加盐等技术手段。
哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。 通过将单向数学函数(有时称为“哈希算法”)应用到任意数量的数据所得到的固定大小的结果。如果输入数据中有变化,则哈希也会发生变化。哈希可用于许多操作,包括身份验证和数字签名。也称为“消息摘要”。 简单解释:哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。