哈希(Hash)函数H也称散列函数或杂凑函数等,是典型的多到一的函数,其输入为一可变长x(可以足够长),输出一固定长的串h(一般为128位、160位、224位、256位、384位、512位,比输入的串短),该串h被称为输入x的Hash值(或称消息摘要(Message Digest)、数字指纹、密码校验、消息完整性校验),记作h=H(x)。为防止传输和存储的消息被有意或无意地篡改,采用散列函数对消息进行运算生成消息摘要,附在消息之后发出或与信息一起存储,如果改动了消息,散列值就会相应地改变,接收者即能检测到这种改动,它在报文防伪中具有重要应用。
Hash函数H一般满足以下几个基本要求:
(1)输入x可以为任意长度;输出数据串长度固定。
(2)正向计算容易,即给定任何x,容易算出H(x);反向计算困难,即给出一个Hash值h,很难找出一特定输入x,使h=H(x)。
(3)抗冲突性(抗碰撞性),包括两个含义:一是给出一消息x,找出一消息y使H(x)=H(y)是计算上不可行的(弱抗冲突);二是找出任意两条消息x、y,使H(x)=H(y)也是计算上不可行的(强抗冲突)。(www.daowen.com)
对Hash函数有两种穷举攻击:一是给定消息的Hash值H(x),破译者逐个生成其他消息y,以使H(x)=H(y);二是攻击者寻找两个随机的消息x和y,并使H(x)=H(y)。这就是所谓的冲突攻击。穷举攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于Hash值的长度。
安全Hash算法(Secure Hash Algorithm,SHA)是美国国家标准技术研究所(NIST)公布的安全Hash标准(Secure Hash Standard,SHS)中的Hash算法。我国Hash函数算法标准是SM3。常见的散列算法有MD5、SHA-1、SHA-2、SHA-3、SM3等。
散列函数的应用范围很广,如消息签名、消息完整性检测、消息非否认性检测等。在安全协议的设计、分析和应用中,也经常用到散列函数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。