Hash 算法

散列函数英语:Hash function)又称散列算法哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。

散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。

函数将数据打乱混合,重新创建一个叫做散列值hash valueshash codeshash sums,或hashes)的指纹。

散列值通常用一个短的随机字母和数字组成的字符串来代表。

好的散列函数在输入域中很少出现散列冲突。在散列表数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。


流行的算法

目前流行的 Hash 算法包括 MD5、SHA-1 和 SHA-2。

MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。其输出为 128 位。MD4 已证明不够安全。

Hash 算法与摘要 78 MD5(RFC 1321)是 Rivest 于1991年对 MD4 的改进版本。它对输入仍以 512 位分组,其 输出是 128 位。

MD5 比 MD4 复杂,并且计算速度要慢一点,更安全一些。MD5 已被证明不 具备“强抗碰撞性”。

SHA (Secure Hash Algorithm)是一个 Hash 函数族,由 NIST(National Institute of Standards and Technology)于 1993 年发布第一个算法。

目前知名的 SHA-1 在 1995 年面 世,它的输出为长度 160 位的 hash 值,因此抗穷举性更好。SHA-1 设计时基于和 MD4 相同 原理,并且模仿了该算法。

SHA-1 已被证明不具备“强抗碰撞性”。 为了提高安全性,NIST 还设计出了 SHA-224、SHA-256、SHA-384,和 SHA-512 算法(统 称为 SHA-2),跟 SHA-1 算法原理类似。

SHA-3 相关算法也已被提出。 目前,一般认为 MD5 和 SHA1 已经不够安全,推荐至少使用 SHA2-256 算法。


数字摘要

顾名思义,数字摘要是对数字内容进行 Hash 运算,获取唯一的摘要值来指代原始数字内容。

数字摘要是解决确保内容没被篡改过的问题(利用 Hash 函数的抗碰撞性特点)。

数字摘要是 Hash 算法最重要的一个用途。

在网络上下载软件或文件时,往往同时会提供一个 数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。


确保传递真实的信息

消息或数据的接受者确认消息是否被篡改的性质叫数据的真实性,也称为完整性。发信人通过将原消息和散列值一起发送,可以保证真实性。

传递数据时,数据与数字摘要一起送,这样接收方可确认数据是否被篡改。

通过数据与数字摘要(其hash值)得匹配,可验证数据是否被修改。


猜你喜欢

转载自blog.csdn.net/weixin_41926234/article/details/80623125
今日推荐