安全哈希函数简介
- 格式:doc
- 大小:138.00 KB
- 文档页数:7
哈希函数的名词解释哈希函数是密码学中的重要概念,它在数据传输和存储过程中起着重要的作用。
该函数可以将任意长度的数据映射为固定长度的输出,通常为一串固定长度的二进制码。
其主要作用是通过对数据加密处理,保证数据的完整性和安全性。
哈希函数的输出通常是一段固定长度的二进制码,常见的长度有128位、256位等。
这个输出码被称为哈希值,也可以称为摘要或指纹。
通过对原始数据进行哈希运算,可以生成唯一的哈希值,即使原始数据发生微小的改变,也会导致哈希值的巨大变化。
哈希函数具有以下重要特性:首先,它是单向函数,即无法通过哈希值逆推出原始数据。
这意味着无法从哈希值还原出原始数据的内容,从而保证了数据的安全性。
其次,哈希函数是固定的,无论输入数据的长度是多少,输出的哈希值都是固定长度的。
因此,哈希函数适用于对大文件和小文件进行处理。
最后,即使原始数据发生微小的改变,哈希值也会发生巨大的变化。
这意味着哈希函数具有很高的敏感性,即原始数据发生微小变化时,生成的哈希值也会发生明显变化。
哈希函数在密码学中有广泛的应用。
其中一个典型的应用是在数据传输过程中验证数据的完整性。
发送方将原始数据通过哈希函数生成哈希值,并将该哈希值与发送数据一起传输给接收方。
接收方在接收到数据后,同样将接收到的数据进行哈希运算生成哈希值,并与发送方传输的哈希值进行比对。
如果两个哈希值相同,则说明数据在传输过程中没有被篡改或损坏,保证了数据的完整性。
另一个重要的应用是在密码学中密码存储过程中。
为了保证用户密码的安全性,通常不会直接存储用户密码,而是将密码通过哈希函数生成哈希值,并将哈希值存储在数据库中。
当用户输入密码进行登录时,系统将用户输入的密码经过哈希函数生成哈希值,并与数据库中存储的哈希值进行比对。
如果两个哈希值相同,则说明用户输入的密码是正确的,从而实现了密码的验证功能。
除了在密码学中的应用,哈希函数还广泛应用于数据索引和查找的过程中。
在数据库管理系统中,哈希函数被用于生成索引,加快数据的检索速度。
sha函数Sha函数是一种被广泛使用的加密方式。
它是由美国安全机构国家安全局(NSA)开发的,其全称为安全哈希算法(Secure Hash Algorithm)。
Sha函数的作用是将输入的任意长度的数据(消息)压缩成一个固定长度的消息摘要(散列值),其长度通常为160位或256位。
Sha函数的应用广泛,例如在数字证书、数字签名、密码学等领域都得到了广泛使用。
下面是Sha函数的步骤:1. 原始数据划分Sha函数首先把原始数据按照512位进行划分,如果数据不够512位,则需要进行数据填充,填充的位数由Sha函数版本决定。
例如,Sha-1需要填充64位,而Sha-256需要填充128位。
填充后的数据长度为512的整数倍。
2. 原始数据处理Sha函数对每一个512位的数据块进行处理,它采用了一些操作,包括位运算、位移、异或、加法等,来对数据块进行处理和加密。
其中最重要的是消息摘要算法(MD算法),它是Sha函数的核心算法,驱动了Sha函数的运作。
3. 循环处理Sha函数采用了多次循环处理的方式,每次处理一个512位的数据块,直到全部512位的数据块处理完成。
处理完成后,Sha函数得到一个256位或160位的消息摘要,这个摘要可以唯一地表示原始数据,防止了数据篡改的风险。
4. 消息摘要输出Sha函数将得到的消息摘要输出,供其他应用程序使用。
消息摘要可以被用来验证数据完整性、对称密钥的生成、数字签名等。
Sha函数的安全性非常高,因为它是不可逆的,即散列值无法反推出原始数据。
同时,Sha函数有一个小改动就会产生完全不同的结果,因此保证了消息摘要的唯一性。
然而,Sha函数也有一些缺陷,例如Sha-1存在碰撞攻击,Sha-2也存在部分攻击,因此人们逐渐采用更加高级的加密方式,例如SHA-3,BLAKE等。
总之,Sha函数是一种非常重要的加密方式,它可以保护我们的数据的安全性和完整性,尽管它不是完美的,但它仍然是当今最常用的加密方式之一。
哈希函数的概念和特点哈希函数是一种将任意长度的消息映射到固定长度的哈希值(消息摘要)的函数。
它通常被用于确保数据的完整性和安全性,因为无论输入数据的大小如何,哈希函数都会生成一个具有相同固定长度的输出值。
哈希函数常见的应用场景有密码学、数据索引、安全随机数生成等。
1.定长输出:哈希函数的输出值是固定长度的,不受输入数据长度的影响。
这使得哈希函数可以适应不同长度的输入数据,且输出值可以作为数据的指纹进行比对,从而保证数据的完整性。
2.唯一性:对于不同的输入数据,哈希函数应该生成不同的哈希值。
如果两个不同的数据生成了相同的哈希值,称为哈希冲突。
哈希冲突可能导致数据损坏和不可预测的结果,因此好的哈希函数应该尽量避免哈希冲突。
3.不可逆性:哈希函数的输出值不能反向推导出输入数据。
这种特性可以保护数据的隐私和安全。
4.高速性:好的哈希函数应该具有高效的计算速度,能够在较短的时间内生成哈希值。
在实际应用中,常用的哈希函数包括MD5、SHA-1、SHA-256等。
它们的输出值长度不同,以SHA-256为例,它生成的哈希值长度为256位,输出值的位数越高,生成的哈希值就越安全,但同时也会影响计算速度。
除了哈希函数的常见特点外,还有一些特殊的哈希函数,例如加盐哈希函数和逆向哈希函数。
加盐哈希函数是一种在哈希值中添加额外的随机数据“盐”,以增加哈希值的复杂度,从而对抗暴力破解和彩虹表攻击。
这种哈希函数常用于保护用户密码,在用户输入密码时,将用户提供的密码和随机生成的“盐”值一起进行哈希,再将哈希值存储在数据库中。
逆向哈希函数则是一种反向操作哈希函数的方法,它可以通过对输出值进行数学计算得到输入数据。
逆向哈希函数可用于恢复密码和破解加密数据,因此,好的哈希函数应该能够抵御逆向哈希函数的攻击。
总之,哈希函数是一种常见的数据加密和完整性验证方法,它通过将任意长度的数据转换为固定长度的指纹来保护数据的安全性。
在实际应用中,我们需要选择适当的哈希函数,根据应用场景来确定哈希值的长度和是否需要添加盐等额外处理。
数据加密中哈希函数的使用方法在现代社会中,数据安全性是一个重要的问题。
随着信息技术的迅速发展,数据的传输和存储量不断增加,保护数据的安全性变得尤为重要。
在数据加密领域,哈希函数是一种常用的工具,可用于验证和保护数据的完整性。
本文将介绍哈希函数的使用方法,并分析其在数据加密中的应用。
首先,让我们了解一下哈希函数的基本概念。
哈希函数是一种将任意长度的输入数据转换为固定长度散列值(哈希值)的函数。
这意味着无论输入数据的长度有多长,哈希函数都会生成一个固定长度的输出。
哈希函数的设计使得无法通过哈希值反向推导出输入数据,同时确保相同的输入数据始终生成相同的哈希值。
这些性质使得哈希函数在数据加密中具有广泛的应用。
一种常见的使用哈希函数的场景是验证数据的完整性。
在数据传输过程中,哈希函数可以用于计算并传输数据的哈希值。
接收方收到数据后,可以使用相同的哈希函数计算接收到的数据的哈希值,并将其与传输过程中接收到的哈希值进行比较。
如果两个哈希值一致,那么可以确定数据在传输过程中未被篡改。
这种机制在网络通信和数据存储中被广泛使用,以确保数据的完整性和可靠性。
此外,哈希函数还可以用于密码学中的密码散列。
密码散列是一种用于存储密码的技术,通过将用户的密码经过哈希函数处理后存储在系统中。
当用户尝试登录时,系统会将输入的密码经过相同的哈希函数处理,并将结果与存储在系统中的哈希值进行比较。
如果两个哈希值匹配,则说明输入的密码是正确的。
这种方式可以避免存储明文密码,提高系统的安全性。
在数据加密中,哈希函数还可以用于生成唯一的标识符。
例如,在分布式系统中,每个数据块可以通过使用哈希函数生成的哈希值作为其唯一标识符。
这样做可以保证每个数据块都有一个唯一的标识符,使得数据的查找和管理更加高效。
当然,在使用哈希函数时,我们还需注意一些安全性方面的考虑。
首先,选择一个强大的哈希函数是至关重要的。
强大的哈希函数应该具有良好的抗碰撞性,即不同的输入数据尽可能生成不同的哈希值。
哈希函数名词解释哈希函数(hash function)是解决密码学上的一个很有用的函数,它能将很多不同的信息结合成一个特征向量。
分组密码体制是数据加密和解密所采用的主要方法,是指把需要加密的文件分为若干组,每组给定一个加密密钥,对这些文件进行加密,其余部分对外宣称是无密文件。
这种方法安全性较高,但效率低下,因此,只在少数场合使用。
哈希函数也可用于对任意长度的数据块进行加密,例如,使用一个512位的字符数组,即可将信息长度扩展至32766位(1K字节),因而使用计算机中的哈希函数对任意大小的信息块都可以进行加密,不再受限于密码长度。
哈希函数的基本原理是:根据文件或数据块的特征,生成一个32位的特征向量(公钥),对该特征向量计算,得到两个32位的特征向量(私钥)。
这两个向量相减就是文件或数据块的密文,如果两个特征向量之和等于所要求的密文,那么这个文件或数据块就是被加密了的;否则就是未加密的。
当然,如果特征向量相减后的值不等于所要求的密文,则说明这个文件或数据块还没有被加密。
1.数据预处理方法。
一般分为三步进行:首先,计算数据的安全哈希值,称作SHA1(sha-1)值;其次,对哈希值和文件加密密钥进行比较,以确认哈希值的正确性;最后,用哈希值来加密数据,哈希值就是加密数据的公钥。
2.数据加密方法。
一般包括数据分组、密钥预处理、哈希函数三步:首先对分组数据进行加密;其次是对加密后的数据进行分组;第三步是选取一个具有足够密钥长度并且具有适当排列顺序的哈希函数对数据进行加密。
2.1.1.1.数据分组方法。
分组时,按哈希函数值的大小对分组后的数据块逐个编号,并且使用固定的哈希函数值,作为下一轮分组和计算哈希值的依据。
这样做,可以保证数据被加密的安全性和实现简单。
2.1.2.1.密钥预处理方法。
密钥预处理时,要按哈希函数值从大到小的顺序进行,先对大的密钥执行密钥变换,再将小密钥插入到大的密钥中去。
同时,由于密钥预处理使用了小密钥,为提高哈希值计算速度,要尽量降低小密钥长度,常用的密钥变换有“距离变换”和“数据变换”。
harsh函数-概述说明以及解释1.引言1.1 概述概述部分的内容可以描述一下harsh函数是什么以及它的重要性和作用。
可以参考以下内容:概述:随着计算机科学的快速发展,数据安全和隐私保护变得尤为重要。
在这个数字化时代,我们需要一种可靠的方法来保护数据的完整性和安全性。
在这方面,hash函数扮演着至关重要的角色。
Hash函数是一种常见的密码算法,主要用于将数据转换为固定长度的字符串。
它通过对任意长度的数据应用哈希算法,生成一个唯一的哈希值。
这个哈希值可以用来验证数据的完整性,检测数据的变化和确定数据的唯一性。
在hash函数的世界里,harsh函数是一种特殊类型的hash函数,它具有许多独特的特点和优势。
与传统的hash函数相比,harsh函数不仅具有更高的效率和更低的冲突率,还可以提供更好的数据安全性和隐私保护。
harsh函数的工作原理是将输入数据通过一系列复杂而精确的计算,转换为一个唯一的哈希值。
这个哈希值具有不可逆的特性,即无法通过哈希值来恢复原始数据。
这种不可逆的特性使得harsh函数成为密码学中重要的工具,广泛应用于数字签名、数据验证、身份验证等各个领域。
此外,harsh函数还具有较低的碰撞概率,即不同的输入数据生成相同哈希值的概率非常低。
这使得harsh函数在数据完整性验证等关键应用场景中更加可靠。
另外,harsh函数还具有良好的计算性能和效率,使得它能够承担大规模数据处理的任务。
总的来说,harsh函数在确保数据安全性和完整性方面发挥着重要作用。
它的独特特性使其在各个领域得到广泛应用,同时也推动了数据安全和密码学的发展。
未来,随着计算机技术的不断进步,人们对于更加高效和安全的harsh函数算法的需求也将不断增加。
1.2文章结构文章结构部分的内容可以描述整篇文章的组织架构和章节安排:在本文中,我将按照如下结构来阐述关于harsh函数的相关知识。
首先,我将在引言部分进行概述,简要介绍harsh函数的定义、背景和应用领域。
hash算法在杀毒中应用原理概述说明以及概述1. 引言1.1 概述:随着网络安全威胁的不断增加,杀毒软件成为了保护计算机和数据安全的重要工具之一。
而在杀毒软件中,hash算法作为一种重要的技术手段被广泛应用。
本文将对hash算法在杀毒领域的应用原理进行深入探讨。
1.2 文章结构:本文主要分为五个部分,即引言、hash算法应用原理、杀毒软件中的hash算法应用举例、实际案例分析与讨论以及结论与总结。
在引言部分,我们将简要说明文章的目的,并介绍文章的结构框架。
1.3 目的:本文旨在探究hash算法在杀毒中的应用原理并通过具体案例来展示其实际效果。
同时,本文也将对不同类型的hash算法进行分类和讨论,以便读者全面了解这一领域内的发展和应用情况。
最后,我们还将对未来hash算法在杀毒领域可能带来的进展进行展望。
通过这篇长文,读者可以更深入地了解hash算法在杀毒方面起到的重要作用,并掌握相关概念和原理。
同时,本文还将提供具体的案例分析和讨论,以帮助读者更好地理解hash算法的实际应用效果。
最后,我们将总结hash算法在杀毒领域的优势和不足,并展望其未来在杀毒领域可能的发展方向。
2. hash算法应用原理:2.1 hash算法基本概念:哈希算法,也称为散列函数,是一种将输入数据映射到固定大小的输出值的函数。
它通过将输入数据作为“键”来计算对应的“哈希值”。
哈希函数是非可逆操作,意味着无法从哈希值还原出原始数据。
2.2 hash算法在杀毒中的作用:在杀毒软件中,hash算法被广泛应用于数据完整性校验、病毒特征库匹配以及快速查找和去重策略等方面。
通过计算文件的哈希值并与预先存储的正确哈希值进行比对,可以验证文件是否被篡改过,从而检测出病毒或恶意软件。
此外,在构建病毒特征库时,hash算法可以高效地存储和查找病毒特征信息。
另外还使用hash表进行快速查找和去重策略,以提高杀毒效率。
2.3 hash算法分类及应用场景:哈希算法主要分为两大类:单向散列函数和消息认证码(MAC)。
带密钥的哈希函数1. 引言哈希函数是一种常见的密码学工具,用于将输入数据映射为固定长度的哈希值。
哈希函数的一个关键特点是,即使输入数据发生细微的改变,输出的哈希值也会完全不同。
这种一致性使得哈希函数在安全领域中被广泛应用,例如数字签名、消息认证码和完整性校验等。
密钥扩展了哈希函数的功能。
传统的哈希函数是公开的,任何知道算法的人都可以使用它来计算哈希值。
然而,在某些情况下,需要对哈希函数进行扩展,以便只有知道密钥的人才能计算哈希值。
这样可以在保证数据完整性的同时,防止恶意篡改和伪造。
本文将详细介绍带密钥的哈希函数,包括其定义、用途和工作方式等方面的内容。
2. 带密钥的哈希函数定义带密钥的哈希函数(Keyed Hash Function)是一种将密钥作为额外输入的哈希函数。
它能够接受两个输入:消息M和密钥K,并输出一个固定长度的哈希值H。
数学上,带密钥的哈希函数可以表示为H = H(M, K),其中H为哈希函数,M为消息,K为密钥。
3. 带密钥的哈希函数用途带密钥的哈希函数在密码学中有着广泛的应用,主要用于以下三个目的:3.1 数字签名数字签名是一种确保数据完整性和身份认证的方法。
发送者使用私钥对消息进行哈希并加密,然后将加密后的哈希值附加到消息上,形成数字签名。
接收者使用发送者的公钥对签名进行解密,并计算消息的哈希值。
如果接收者得到的哈希值与签名中解密后的哈希值一致,则说明消息未被篡改且发送者的身份是真实的。
带密钥的哈希函数在数字签名中起到了关键作用。
发送者使用密钥作为哈希函数的输入之一,这样即使敌手知道哈希函数的算法,也无法计算正确的哈希值。
3.2 消息认证码消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的技术。
发送者使用共享的密钥对消息进行哈希,并将哈希值与消息一起发送给接收者。
接收者使用相同的密钥对消息进行哈希,并将所得到的哈希值与发送方传来的哈希值进行比对。
安全哈希函数
一、哈希函数定义
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值进行比较,进而确定输入的密码是否正确。
通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。
这可以避免用户的密码被具有系统管理员权限的用户知道。
伪随机数生成
五、安全哈希算法
安全哈希函数的一般结构
大部分安全哈希函数都是迭代结构的。
图中M i为被分成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 ("12345678901234567890123456789012345678901234567890123456789012345678901234567 890") = e33b4ddc9c38f2199c3e7b164fcc0536
MD5
MD5(RFC 1321)是Rivest 于1991年对MD4的改进版本。
它对输入仍以512位分组,经过一系列处理之后,其输出是4个32位字的级联,与MD4 相同。
MD5算法被王小云证明是可攻破的,因此也已经不安全了。
MD5与MD4的区别:MD5用了4轮变换,比MD4多一轮;MD4中第一轮没有常量加,MD5中64步每一步用了一个不同的常量K[i];MD5每轮加上前一步的结果,MD4没有。
MD5首先对数据进行填充,使其成为512的倍数。
上图中的每个H MD5进行4轮运算,每轮包括16次操作,每次操作的流程图如图所示
M i表示一个32位的输入消息分组(16*32=512),K i表示一个32位常数,用来完成每次不同的计算,<<<s表示向左位移s位。
图中的F是一个非线性函数,四轮中的F函数各不相同,分别为:
F(X,Y,Z) =(X&Y)|((~X)&Z)
G(X,Y,Z) =(X&Z)|(Y&(~Z))
H(X,Y,Z) =X^Y^Z
I(X,Y,Z)=Y^(X|(~Z))
每轮中的16次运算的参数也不相同,详见百度百科。
HAVAL
HAVAL是MD5的改进版本,其轮数可以是3、4或5(每轮16步),输出长度分别为128、160、192或224位。
HAVAL用高非线性的7-变量函数取代了MD5的简单非线性函数。
SHA1
SHA由美国国家标准技术研究所NIST开发,与1993年发表,SHA-1是基于MD4设计的。
输入最大长度为2^64位的数据,输出160位的消息摘要,同样以512位数据块进行处理。
具体这里不详述。
SHA-256
输出由SHA-1的160位扩大到256位,迭代次数由SHA-1的80次增加到128次
SHA-384
输出扩大到384位,迭代次数增加到192次
SHA-512
输出扩大到512位,迭代次数增加到256次
输入位数输出位数迭代次数分组长度找到碰撞
MD5 无限128bit 64 512bit 是
SHA-1 264-1 160bit 80 512bit 理论260
SHA-2 SHA-256 264-1 256bit 64 512bit 否SHA-384 2128-1 384bit 80 1024bit 否SHA-5122128-1 512bit 80 1024bit 否
七、评价标准
抗冲突性
评价一个哈希函数的方法之一是看找到一对碰撞所花费的代价有多高。
分布均匀性
好的哈希函数有这样的特性,只要输入有少许差异,转换出来的哈希值就会有极大的不同。
哈希表大小、填充因子等,主要用于评价哈希表
八、攻击
原像攻击:对于给定散列值Y,找到M,使得H(M)=Y
第二原像攻击:伪造消息,使其与原始消息的哈希值相同,即对于消息x,找到y,使得h(x)=h(y)。
碰撞攻击:即找到任意两消息M和M’,M≠M’,使得H(M) = H(M’)
常见的攻击:
生日攻击法
在23个人中,存在两个生日在同一天的人的概率为0.5073,而如果有100个人,则这个概率能达到0.9999997.利用这个原理,攻击者只需枚举一定量的值,就可以找出一对哈希值相同的输入值。
王小云成功找到MD5的碰撞,且把SHA-1的攻击运算次数从2^80降到2^63。