- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[安全哈希函数简介
安全哈希函数
哈希函数定义
? Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,preimage),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来 唯一的确定输入值。?简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的
一个“优良”的hash函数 f 应当满足以下三个条件:
任意y,找x,使得f(x)=y,非常困难preimage resistant)。
给定x1,找x2,使得f(x1)=f(x2),非常困难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值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。
安全哈希算法
安全哈希函数的一般结构
大部分安全哈希函数都是迭代结构的。图中Mi为被分成L块的原始信息,f为杂凑函数,IV为初始值。
填充信息和IV的选择对哈希函数的安全性有很大影响,任何两条消息都不能被填充成相同的消息,填充的末尾应该加上消息的长度;IV的选择定义为该哈希函数描述的一部分。
常用安全哈希函数
目前使用最多的哈希函数有MD(Message-Digest Algorithm)系列(MD4、MD5、HAVAL、RIPEMD)和SHA系列(SHA-1、SHA-256)
MD4
1990年Ronald L. Rivest设计,通过3圈的操作将任意长度的消息变换成128位的哈希值。MD4算法的前两圈已被Dobbertin等人攻破,证明MD4算法是不安全的,但整个算法并没有被攻破过。具体算法详见《MD4算法分析》
例子:
MD4 () = 31d6cfe0d16ae931b73c59d7e0c089c0 MD4 (a) = bde52cb31de33e46245e05fbdbd6fb24 MD4 (abc) = a448017aaf21d8525fc10ae87aa6729d MD4 (message digest) = d9130a8164549fe818874806e1c7014b MD4 (abcdefghijklmnopqrstuvwxyz) = d79e1c308aa5bbcdeea8ed63df412da9 MD4 (ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789) = 043f8582f241db351ce627e153e7f0e4 MD4 (12345678901234567890123456789012345678901234567890123456789012345678901234567890) = e33b4ddc9c38f2199c3e7b164fcc0536
MD5
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。
MD5与MD4的区别:MD5用了4轮变换,比MD4多一轮;MD4中第一轮没有常量加,MD5中64步每一步用了一个不同的常量K[i];MD5每轮加上前一步的结果,MD4没有。
MD5首先对数据进行填充,使其成为512的倍数。
上图中的每个HMD5进行4轮运算,每轮包括16次操作,每次
文档评论(0)