哈希算法介绍

Posted 毕老师大家庭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希算法介绍相关的知识,希望对你有一定的参考价值。

引言:什么是哈希算法?哈希(Hash)算法又称为散列、杂凑算法,可以把任意长度的消息M映射成为一个较短且固定长度的输出H(M),称H(M)为哈希值,散列值、杂凑值或者消息摘要。这是一种压缩映射,散列值的空间通常小于输入的空间。在加密中,它是一种单向密码体制,即从明文到密文的不可逆映射,只有加密过程,没有解密过程(因为一个输出可能对应多个输入)。


1哈希的用途

(a)消息认证

(b)数字签名

(c)口令的安全性

(d)数据完整性

(e)语音识别

2哈希函数的特点

1、易压缩 

2、易计算 

3、单向性

4、抗碰撞性:理想的哈希函数是无碰撞的,但是实际的算法设计中很难做到(大空间的消息压缩映射到小空间上),有两种抗碰撞性:

i.弱抗碰撞性:对于给定的一个消息,要发现另一个消息使其碰撞在计算上不可行;

ii.强抗碰撞性:对于任意的一对不同的消息,使其碰撞在计算上不可行。

5、高灵敏性:如果输入有微小不同,哈希运算后的输出有一半以上不同。

3哈希算法介绍

一个可靠的哈希算法应该满足:

对于给定数据M,易算出哈希值h=H(M);根据h很难反算出M;很难找到M和N使得H(M)=H(N)

下面通过一个游戏,来了解简化的哈希算法

猜数游戏:

李:我想一个数,假设为A,然后A乘以B,得到结果C。 A是我的密钥,我把结果C告诉你,然后你来猜A是奇数还是偶数?

张:那不行,如果你告诉我C是12,我猜A是奇数,你可以说A是4,B是3。我猜A是偶数,你可以说A是3,B是4。无法验证A的唯一性。

李:那换个运算过程

1、 A+123=B

2、 B^2=C

3、 取C中第2~4位数,组成一个3位数D

4、 D/12的结果求余数,得到E

假如A为5

B=5+123=128

128^2=16384

D=638   E=638mod12=53

这样一个A值就对应一个唯一的E值,根据E还推算不出A。是这一种单向加密,称为哈希算法。

目前比较普遍的哈希算法有MD5,SHA1(160位哈希值),SHA2(256位哈希值和512哈希值)

哈希算法介绍
哈希算法介绍

给我【好看】

你也越好看!



以上是关于哈希算法介绍的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获相似基因(两个相似哈希算法分析)

哈希(hash) - 哈希算法的应用

哈希算法的设计要点及应用场景

一致性哈希算法

查找算法系列之复杂算法:哈希查找

一文读懂哈希和一致性哈希算法