[HASH]哈希算法综述

Posted Verilog写密码

tags:

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


01


哈希算法



哈希算法又称单向散列函数、杂凑函数、hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。

目前常见的哈希算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)、SHA-2、SHA-3、SM3算法等。



02


可以解决的安全性问题




哈希算法主要用于完整性校验和提高数字签名的有效性。

这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。





03


如何实现




哈希算法可以由硬件或软件实现,由于哈希算法结构较简单,软硬件实现均可以达到很高的计算速度。




04


存在的问题




一个安全的哈希算法应该至少满足以下几个条件。

1)    输入长度是任意的;

2) 输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;(生日问题:设想由随机选出的N个人组成一个集合,在这N个人中,如果要保证至少有两个人生日一样的概率大于0.5,那么N至少是多少?排除2月29日的情况。N=23)

3)     对每一个给定的输入,计算输出即杂凑值是很容易的;

4)    给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。

目前,MD5和SHA-1的强抗碰撞性已被攻破,SHA-1除了用于保持兼容性的目的以外,其他情况下都不推荐使用。但是SHA-2目前并没有出现明显的弱点。由于MD5和SHA-1的强抗碰撞性已被攻破,NIST需要一个与之前算法不同的,可替换的加密散列算法,于是NIST于2012年征集了新的哈希算法,也就是现在的 SHA-3。





05


个人理解




哈希算法结构简单,应用广泛,其高速硬件实现与碰撞性分析也是很多专家学者们不断探索的方向。

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

python之哈希算法

python hash()和哈希算法

哈希算法(Hash算法)是什么及用途

哈希表与哈希(Hash)算法

哈希算法从原理到实战

大话Java中的哈希(hash)结构