哈希函数可以使数据序列的访问过程更加快速精确。通过哈希函数,可以更慢地定位数据元素: 1直接寻址方法:以关键性字的值或关键性字的线性函数作为哈希地址。一、 即H(key)=key或H(key) = akey + b,其中A和B是常数(这种散列函数称为自函数) 2数值分析方法:在分析一组数据时,例如一组员工的出生日期,我们发现出生日期的后几个数字大致相同。在这种情况之下,发生冲突的可能性将非常大。然而,我们发现出生日期的最终几位数字表示月份和详细日期间存在很大差异。如果使用下列数字形成哈希地址,则冲突的概率将明显降低。因此,数值分析的方法是找出数字规则,并尽可能余地使用这些数据来构造冲突概率较低的哈希地址 3。平方取中法:以关键性字平方后的下方数字作为哈希地址 4。折叠方法:将关键性字切成数个数字相近的部分。最终一部分可以有有所不同的数字,然后将这些部分的叠加和(去掉进位)作为哈希地址 5。随机数法:选择一个随机函数,将关键性字的随机值作为哈希地址,常用于关键性字长度有所不同的情况 6。除留余数法:将关键性字的余数除以不大于哈希表长度m的数字P作为哈希地址。即 H(key) = key MOD p, p<=m。它不仅可以间接取关键性字模块,还可以进行折叠、平方取中操作后取模块。P的选择非常关键。它通常采用素数或M。如果P选择失当,easy将生成同义词
MD5算法的“数字指纹”特性使其成为应用最广泛的文件完整性验证算法,通常用于以下两种情况:
- 文件传输验证 将传输文件的 MD5 哈希与源文件进行比较,以确保一致性,从而在统计上确保两个文件相同。 它通常用于检查文件传输过程中是否存在错误,以确保文件在传输过程中没有被恶意篡改。 很多下载工具也利用MD5的特性来保证用户在断点处多次恢复下载后下载文件的正确性
- 保存二进制文件系统的数字指纹 许多系统管理和安全软件都提供文件系统完整性评估功能。 在系统初始安装后,为文件系统建立了一个基本的校验和数据库 由于哈希校验和的长度很小,因此可以方便地存储在容量很小的存储介质上。 以后可以定期或按需重新计算文件系统的校验值。 一旦发现与原始保存的值不匹配,则表明该文件被非法修改,或感染病毒,或被木马程序替换 。 应用程序有许多不同的名称,有时称为摘要,有时称为 学校校验和,有时称为指纹。 其实意思是一样的,就是hash可以用来表示数据本身,因为如果数据在存储或者传输过程中发生任何变化,它的hash都会发生变化。 由于这种独特的特性,哈希函数最常见的功能是执行数据完整性检查,即数据无损检查。