写点什么

什么是“哈希算法”?

作者:InfoQ IT百科
  • 2022 年 4 月 24 日
  • 本文字数:598 字

    阅读完需:约 2 分钟

哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,一般来说满足这样的关系:f(data)=key,输入任意长度的 data 数据,经过哈希算法处理后输出一个定长的数据 key。同时这个过程是不可逆的,无法由 key 逆推出 data。


哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,一般来说满足这样的关系:f(data)=key,输入任意长度的 data 数据,经过哈希算法处理后输出一个定长的数据 key。同时这个过程是不可逆的,无法由 key 逆推出 data。


如果是一个 data 数据集,经过哈希算法处理后得到 key 的数据集,然后将 keys 与原始数据进行一一映射就得到了一个哈希表。一般来说哈希表 M 符合 M[key]=data 这种形式。


哈希表的好处是当原始数据较大时,我们可以用哈希算法处理得到定长的哈希值 key,那么这个 key 相对原始数据要小得多。我们就可以用这个较小的数据集来做索引,达到快速查找的目的。


稍微想一下就可以发现,既然输入数据不定长,而输出的哈希值却是固定长度的,这意味着哈希值是一个有限集合,而输入数据则可以是无穷多个。那么建立一对一关系明显是不现实的。所以"碰撞"(不同的输入数据对应了相同的哈希值)是必然会发生的,所以一个成熟的哈希算法会有较好的抗冲突性。同时在实现哈希表的结构时也要考虑到哈希冲突的问题。


密码上常用的 MD5,SHA 都是哈希算法,因为 key 的长度(相对大家的密码来说)较大所以碰撞空间较大,有比较好的抗碰撞性,所以常常用作密码校验。

用户头像

还未添加个人签名 2021.04.12 加入

还未添加个人简介

评论

发布
暂无评论
什么是“哈希算法”?_InfoQ IT百科_InfoQ写作社区