哈希函数的发明者是美国著名的计算机科学家罗伯特·李·哈希(Ralph Leslie Hash),他曾在1973年发表自己的著作,提出了哈希函数的概念。哈希函数是一种将任意长度的消息,压缩成恒定长度输出值的函数,被广泛应用在安全数据存储、数据加密及数据检验等多个领域,可以确保数据的一致性。
一、哈希函数的定义
哈希函数也称摘要函数,是一种特殊的散列函数,能够将任意长度的输入消息编码(压缩)为固定长度的输出,因此哈希函数是消息摘要算法的重要组成部分。它的原理是:将一个消息以某种算法处理,然后生成一段唯一的可见字符串,这个字符串就是数据校验码,用来检验特定数据的完整性。若检验通过,说明数据无法被篡改;若不通过,则说明数据已被篡改,需要采取补救措施。
二、哈希函数的功能
1、唯一性:同一消息输出的哈希结果也是唯一的,这在密码信息、数据完整性检查中得到了广泛的应用;
2、一致性:多次计算得出相同的哈希结果,改变一个字符的输入,哈希结果就可能完全不同,使用哈希函数可以保证数据的安全性;
3、不可逆性:哈希函数输出的哈希值是不可逆的,即不可通过哈希值来推导哈希函数的输入,这也成为哈希函数在安全性上最大的优势;
4、算法稳定:哈希函数的算法稳定,不受输入数据的影响,即在同一种算法环境下,相同的输入得到相同的输出结果;
三、哈希函数的工作原理
哈希函数的工作原理大致可以分为三个步骤:
(1)首先对消息的文本内容进行分组,将消息内容分为若干个固定长度的分组,比如每两个字节为一组,每个组称为一个分组,一个消息由若干个分组组成;
(2)然后将每一个分组利用哈希算法,通过某一函数运算,多次迭代,一次将这个分组映射到哈希表中的固定的一个地址,这个地址上的数值为分组的摘要;
(3)最后将这个摘要拼接起来,然后经过另一个函数映射到某个哈希值,这段值就是我们所要的哈希函数的输出结果。
四、哈希函数的应用领域
(1)安全数据存储:因为哈希函数的特点,可以将一个消息映射成一个唯一而固定长度的哈希值,从而确保存储数据的安全性;
(2)数据加密:可以将消息映射成哈希值,然后再通过其他的传输方式进行数据加密传输,这样就保证了数据的安全;
(3)检验数据完整性:发送信息的人可以先将消息进行哈希处理,给出哈希值,发送消息的对象再将输入消