单向散列函数简介
概论
单项散列函数又称为安全散列函数或者哈希函数,可以将一段可变长度是输入数据转化为固定长度的一段输出值。 输入数据通常称为消息,输出数据通常称为消息摘要或者摘要,可用于检查消息的完整性。
常用的单向散列算法有MD4/5系列和SHA系列等。由于MD4、MD5算法都已被攻破,渐渐退出历史舞台,而SHA系列算法在物联网安全领域比较常见,特别是SHA256算法。
额外提一点,提到单向散列函数的特性,很多人一下子想到,我们经常使用到的CRC校验,例如将一段可变长度的数据经过CRC校验后,生成2个字节的校验值,那这个算不算是单向散列函数? 单从这个特性上看,CRC也算是单向单列函数,但是由于CRC不是完全单向性,从CRC值反推出满足要求的消息并不困难,所以CRC通常只用来对数据的完整性校验,而不能用来检查数据是否被恶意篡改。
单向散列函数性质
单向散列函数为消息产生了一个指纹,能够实现对消息的完整性检测,单向散列函数需要满足的性质如下:
-
输入长度可变: 输入为任意长度的消息
-
输出长度固定 输出的消息摘要长度固定
-
高效率 尽管长的消息计算时间相对会长一些,但整体计算速度还是很快的
-
单向性 给定消息可以算出摘要值,但根据摘要值反推出消息是不可行的
-
抗碰撞性 找到两个消息他们的摘要是相同的,在计算上是不可行的
单向散列函数使用方法
- A准备好消息数据
- A使用单向散列函数计算消息摘要
- A将消息和消息摘要一起发送给B
- B接收到消息和消息摘要后,使用单向散列函数计算消息的摘要。
- 对比接收到的消息摘要和自己计算出来的消息摘要是否一致。
- 如果一致则说明消息未被损

本文介绍了单向散列函数的概念、性质及典型应用,如消息完整性检测、伪随机数生成、消息认证码和数字签名。特别强调了SHA256算法在物联网安全中的重要性,由于其抗碰撞性和安全性,成为目前广泛使用的散列算法。同时,文章指出单向散列函数在面对消息伪装问题时的局限性,并提及了数字签名作为补充方案。
最低0.47元/天 解锁文章
6566

被折叠的 条评论
为什么被折叠?



