哈希算法

哈希算法

什么是哈希算法

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

哈希算法有什么特点

确定性

如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。

散列碰撞(collision)

散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同。

不可逆性

一个设计优秀的加密散列函数是一个“单向”操作:对于给定的散列值,没有实用的方法可以计算出一个原始输入,也就是说很难伪造。

同时一个哈希值对应无数个明文,理论上也不知道哪个是正确对应的。

混淆特性

输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值,没有规律可循。

哈希算法有什么用

保护资料

加密存储在数据库的密码字符串。

确保传递真实的信息

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

散列表

散列表是散列函数的一个主要应用,使用散列表能够快速的按照关键字查找数据记录。

错误校正

使用一个散列函数可以很直观的检测出数据在传输时发生的错误。在数据的发送方,对将要发送的数据应用散列函数,并将计算的结果同原始数据一同发送。在数据的接收方,同样的散列函数被再一次应用到接收到的数据上,如果两次散列函数计算出来的结果不一致,那么就说明数据在传输的过程中某些地方有错误了。这就叫做冗余校验。

语音识别

对于像从一个已知列表中匹配一个MP3文件这样的应用,一种可能的方案是使用传统的散列函数——例如MD5,但是这种方案会对时间平移、CD读取错误、不同的音频压缩算法或者音量调整的实现机制等情况非常敏感。使用一些类似于MD5的方法有利于迅速找到那些严格相同(从音频文件的二进制数据来看)的音频文件,但是要找到全部相同(从音频文件的内容来看)的音频文件就需要使用其他更高级的算法了。

有哪些哈希算法

算法名称 输出大小(bits) 内部大小 区块大小 长度大小 字符尺寸 碰撞情形
HAVAL 256/224/192/160/128 256 1024 64 32 Y
MD2 128 384 128 No 8 大多数
MD4 128 128 512 64 32 Y
MD5 128 128 512 64 32 Y
PANAMA 256 8736 256 N 32 Y
RadioGatún 任意长度 58 3 N 1-64 N
RIPEMD 128 128 512 64 32 Y
RIPEMD-128/256 128/256 128/256 512 64 32 N
RIPEMD-160/320 160/320 160/320 512 64 32 N
SHA-0 160 160 512 64 32 Y
SHA-1 160 160 512 64 32 有缺陷
SHA-256/224 256/224 256 512 64 32 N
SHA-512/384 512/384 512 1024 128 64 N
Tiger(2)-192/160/128 192/160/128 192 512 64 64 N
WHIRLPOOL 512 512 512 256 8 N

The End
以上摘取文献参考维基百科

posted @ 2020-10-22 10:46  古宝只  阅读(618)  评论(0编辑  收藏  举报