admin管理员组文章数量:1566223
2024年7月25日发(作者:)
安全哈希函数
一、 哈希函数定义
Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做
预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转
换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列
成相同的输出,而不可能从散列值来 唯一的确定输入值。 简单的说就是一种将任意长度的
消息压缩到某一固定长度的消息摘要的函数。
二、 性质
基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输
入也是不相同的。但反过来不同的原始输入不一定能得到相同的散列值,即发生了碰撞。哈
希函数的定义域无限,而值域有限,因此理论上来讲每个哈希函数都可以找到碰撞。
一个“优良”的hash函数 f 应当满足以下三个条件:
任意y,找x,使得f(x)=y,非常困难。此为哈希函数的单向性,或抗原像性(preimage
resistant)。
给定x1,找x2,使得f(x1)=f(x2),非常困难。弱抗碰撞性,或抗第二原像性(second preimage
resistant)。
找x1,x2,使得f(x1)=f(x2),非常困难。强抗碰撞性(Collision Resistant)。
三、 分类
哈希函数有字符串哈希函数,一般用于数据存储;安全哈希函数
安全哈希函数的分类:
根据安全水平:
弱抗碰撞哈希函数和强抗碰撞哈希函数,后者是包含前者的。
在保护口令的应用中,只需弱抗碰撞性就够了,但在数字签名中,必须有强抗碰撞性。
根据是否使用密钥:
带密钥的哈希函数:消息的散列值由只有通信双方知道的秘密密钥K来控制,此时散列值称
作MAC(Message Authentication Code)
不带密钥的哈希函数:消息的散列值的产生无需使用密钥,此时散列值称作MDC(Message
Detection Code
四、 哈希函数的用途
数字签名
哈希函数可以提高签名的速度,减少运算,又可以不泄露签名所对应的消息,还可以将
消息的签名与加密变换分开处理。
校验
可以校验数据是否被篡改。传输消息之前对消息进行哈希变换,接收者也进行相同的哈
希变换,若两个哈希值相同,可以认为消息在传输过程中没有被篡改。
快速访问
散列表的寻址时间复杂度为O(1),在数据存储中运用较多,这里不作详述。
安全访问认证
MD5广泛用于操作系统的登陆认证上,如在Unix系统中用户的密码是以MD5(或其它
类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密
码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入
的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用
户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。
伪随机数生成
版权声明:本文标题:安全哈希函数简介 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1721865542a901926.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论