单向散列函数解析

目录

1. 概述

2. 单向散列函数的性质

2.1 根据任意长度的消息计算出固定长度的散列值

2.2 能够快速计算出散列值

2.3 消息不同散列值也不同

2.4 具备单向性

3. 单向散列函数的算法

3.1 MD5

3.2 SHA序列

3.3 SM3


1. 概述

        针对计算机所处理的消息,有时候我们也需要用到“指纹”。当需要比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就可以了。使用单向散列函数就可以获取消息的“指纹”,通过对比“指纹”,就能够知道两条消息是否一致。

        单向散列函数(one-way hash function)有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。

        单向散列函数也称为消息摘要函数(message digest function )、哈希函数或者杂凑函数。

        输入单向散列函数的消息也称为原像(pre-image)。

        单向散列函数输出的散列值也称为消息摘要(message digest )或者指纹(fingerprint )。

        这里的消息不一定是人类能够读懂的文字,也可以是图像文件或者声音文件。单向散列函数不需要知道消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。

        散列值的长度和消息的长度无关。无论消息是1比特,还是100MB,甚至是100GB,单向散列函数都会计算出固定长度的散列值。以SHA-256单向散列函数为例,它所计算出的散列值的长度永远是256比特(32字节)。

2. 单向散列函数的性质

2.1 根据任意长度的消息计算出固定长度的散列值

        首先,单向散列函数的输入必须能够是任意长度的消息。其次,无论输入多长的消息,单向散列函数必须都能够生成长度很短的散列值,如果消息越长生成的散列值也越长的话就不好用了。从使用方便的角度来看,散列值的长度最好是短且固定的。

2.2 能够快速计算出散列值

        计算散列值所花费的时间必须要短。尽管消息越长,计算散列值的时间也会越长,但如果不能在现实的时间内完成计算就没有意义了。

2.3 消息不同散列值也不同

        为了能够确认完整性,消息中哪怕只有1比特的改变,也必须有很高的概率产生不同的散列值。

        如果单向散列函数计算出的散列值没有发生变化,那么消息很容易就会被篡改,这个单向散列函数也就无法被用于完整性的检查。两个不同的消息产生同一个散列值的情况称为碰撞(collision)。如果要将单向散列函数用于完整性的检查,则需要确保在事实上不可能被人为地发现碰撞。

2.4 具备单向性

        单向散列函数必须具备单向性(one-way)。单向性指的是无法通过散列值反算出消息的性质。根据消息计算散列值可以很容易,但这条单行路是无法反过来走的。

3. 单向散列函数的算法

3.1 MD5

  • MD5即Message-Digest Algorithm 5;
  • MD5输入以512位的分组进行处理,输出为定长的128比特的消息摘要;
  • MD5由MD4、MD2改进而来,散列算法只能单向工作;
  • MD5的强抗碰撞性已经被攻破,也就是说,现在已经能够产生具备相同散列值的两条不同的消息,因此它已经不安全了。

3.2 SHA序列

  • SHA即Secure Hash Algorithm
  • SHA家族有:SHA-1、SHA-2(SHA-256、SHA-384、和SHA-512)、SHA-3。
  • SHA-1是由NIST(National Institude of Standards and Technology,美国国家标准技术研究所)设计的一种能够产生160比特的散列值的单向散列函数;SHA-1的强抗碰撞性已经被攻破,因此它也已经不安全了。
  • SHA-256、SHA-384、和SHA-512也是由NIST设计的单向散列函数,它们的消息长度分别为256比特、384比特、512比特,这些单向散列函数合起来统称为SHA-2。
  • SHA-3:是一种作为新标准发布的单向散列函数算法,用了替代在理论上已经被找出攻击方法的SHA-1算法。全世界的企业和科学家提交了很多SHA-3的候选方案,经过长达5年的选拔,最终于2012年确定将Keccak算法作为SHA-3标准。Keccak最终被选为SHA-3的理由如下:(1)采用了与SHA-2完全不同的结构,(2)结构清晰,易于分析,(3)能够适用于各种设备,也适用于嵌入式应用,(3)在硬件上的实现显示出了很高的性能,(4)比其他最终候选算法安全性边际更大。
  • SHA-3的出现并不意味着SHA-2就不安全了,在一段时间内,SHA-2和SHA-3还将会共存。

3.3 SM3

  • SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布,相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。
  • 在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当,消息长度也是256比特。

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值