‘壹’ 摘要算法如何在SSL中防止数据被篡改
实际应用中特别在一些安全性要求高的通信场景中往往要保证数据不被篡改.但对于一些信息量大,信息数量多的消息直接进行加密解密过程会严重消耗性能.因此提出消息摘要算法,对消息的摘要进行加解密的性能损耗远小于对消息整体进行加密,并且消息摘要也可以检测消息是否被篡改.目前着名的摘要算法有SHA,MD5等.下文是在SSL通信中如何使用摘要算法防止数据被篡改的简单理解.
1,假设A有一量长消息需要发送给B,需要对消息进行摘要.首先摘要算法会对消息整体进行特征提取.这段特征值就被称为消息的摘要.
提取出来的特征值要能确保消息在作任何一个位置被篡改,篡改多少都能反映出来,即消息被篡改了重新进行摘要操作总能得到与未篡改时不同的特征值.相反地,不同的特征值也意味着不同的消息体.但无须通过特征值还原消息.即特征值只能反映出消息被篡改了,无法反映出消息在何处被篡改,也无法通过特征值还原丢失或者被删除的消息.
2,A使用B的公钥对计算出来摘要进行加密,并将摘要和消息(消息明文)一并发送给B.
假想A发送给B的消息被C截获了,此时C对消息明文可见.但C不能解码出摘要内容(A使用B的公钥发送的摘要只有B的私钥可以解密,而B的私钥只有B才持有).设想此时C对消息修改后重新做摘要,并使用B的公钥进行加密,再发送给B.此时B端解密出来的摘要已经被篡改,因此C的修改在B端通过了摘要验证.这样虽然对消息进行摘要但仍然还是无法保证数据不被篡改.为了解决这个问题.要求A端不能只使用明文进行特征提取,A端可以使用一些私密信息(只有A和B知晓的消息,C并不知情)与消息明文一起混合提取特征.这样虽然C可以获取明文,但对秘密信息并不知情,C尝试重新生成摘要时由于缺失私密信息也无法生成被B成功验证的摘要.这样使用摘要算法就防止了第三方对数据的篡改.
‘贰’ 用java程序实现消息摘要算法,并生成一个数的消息摘要
import java.security.MessageDigest;
String myinfo="我的测试信息";
MessageDigest alg = MessageDigest.getInstance("MD5");
alga.update(myinfo.getBytes());
byte[] bytes = alga.digest();
‘叁’ 摘要算法的特点是什么
“消息摘要”(Message Digest)是一种能产生特殊输出格式的算法,这种加密算法的特点是无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是“摘要”,被“摘要”的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是“不可逆”的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证,而不能作为原数据内容的加密方案使用,否则谁也无法还原。
‘肆’ 说明消息摘要、数字签名和身份认证这三者之间的关系
分少了,所以我扼要回答:
消息摘要:消息的hash函数,采用不可逆算法运算后的结果,例如md5,crc等等;
数字签名:算法公开,私钥保密的加密算法,可以确定作者的身份;
身份认证:通常指基于第三方认证机构的认证方式,一个可信赖的第三方机构提供认证服务。
‘伍’ 摘要算法的分类
1、CRC8、CRC16、CRC32
CRC(Cyclic Rendancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。
在 WinRAR、WinZIP 等软件中,也是以 CRC32 作为文件校验算法的。一般常见的简单文件校验(Simple File Verify – SFV)也是以 CRC32算法为基础,它通过生成一个后缀名为 .SFV 的文本文件,这样可以任何时候可以将文件内容 CRC32运算的结果与 .SFV 文件中的值对比来确定此文件的完整性。
与 SFV 相关工具软件有很多,如MagicSFV、MooSFV等。
2、MD2 、MD4、MD5
这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron Rivest(RSA公司)在1992年提出,被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5 都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为 .md5或.md5sum),这样接收者在接收到文件后,就可以利用与 SFV 类似的方法来检查文件完整性,绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,另外,它也是目前计算机犯罪中数据取证的最常用算法。
与MD5 相关的工具有很多,如 WinMD5等。
3、SHA1、SHA256、SHA384、SHA512
SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构—— 美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。
4、RIPEMD、PANAMA、TIGER、ADLER32 等
RIPEMD是Hans Dobbertin等3人在对MD4,MD5缺陷分析基础上,于1996年提出来的,有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。
TIGER由Ross在1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化。
‘陆’ 不同原文用同一个哈希算法进行处理的消息摘要一定不同吗
1.哈希算法对原文的长度理论上是没有限制的,如果有限制的话,基本上是考虑硬件存储的问题。
2..哈希算法大多数是迭代结构,也就是将明文分成相同长度的若干block,给定一个初始值IV,完成一个block的哈希值计算之后,将这个哈希值作为下一个block的初始值,再继续下一个block哈希值计算,直到最后一个block的计算完成后,输出的最终结果就是该明文的消息摘要。当然实际使用的哈希算法还需要掩码和消息填充等步骤,但基本原理是这样的。
实际上将长明文压缩成消息摘要,是一定会有碰撞产生,也就是两个不同的明文生成相同的哈希值,因为明文和消息摘要的信息量不同。但是所谓的不同原文生成的摘要一定不同,是指在通常的计算条件下,你得到两个不同的明文生成相同的哈希值的概率非常小,以至于你无法在能够接受的时间内,或者在计算资源有限的情况下,有效的寻找碰撞,或者伪造消息摘要。
‘柒’ 什么是mac它与消息摘要有什么不同什么是hmac
消息摘要与MAC的区别,消息摘要只能保证消息的完整性,MAC不仅能够保证完整性,还能够保证真实性
‘捌’ sha 1算法生成的摘要是多少位
160位。
SHA-1(英语:SecureHashAlgorithm1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。
最初载明的算法于1993年发布,称做安全散列标准(SecureHashStandard),FIPSPUB180。这个版本现在常被称为SHA-0。
它在发布之后很快就被NSA撤回,并且由1995年发布的修订版本FIPSPUB180-1(通常称为SHA-1)取代。SHA-1和SHA-0的算法只在压缩函数的消息转换部分差了一个比特的循环位移。
‘玖’ 描述数字签名和消息摘要算法的异同
身份认证就是,像用户名密码、动态口令、USB Key认证等输入等一致。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
就是一个是用户自身确认真伪,一个是信息加密确定真伪
‘拾’ 如何用C语言实现MD5算法计算一个文本的消息摘要
MD5是不可能逆向的。
王教授的碰撞法是利用了MD5或者SHA1算法的一个特性,
根据MD5和SHA1等Hash算法的特点,因为他们是任意长度的字符串变成固定长度的摘要信息。
那么这里就有可能发生一个问题,就是不同的字符串在理论上是有可能产生相同的摘要信息。
王教授所谓的碰撞法,碰撞的就是不同的字符串所产生的摘要信息是一样的那些字符串。因此得名碰撞法。 碰撞就是体现在这里。没有什么其它的传神的东西了。根据SHA1和MD5等Hash算法,在设计时候,设计这个算法的人认为不同的字符串要产生相同结果的摘要信息的可能性几乎为零。而王教授则证明了SHA1和MD5等Hash算法产生的摘要信息规则是可以在比较短时间内被破解的。这样一来,原始数据的 Integrity 就被打破了。 所谓的破解,也就是体现在这里。
至于破解工具,下面的地址提供一些免费的破解服务,能破解一些简单的密码,其实都是采用字典或暴力破解。
www.cmd5.com
www.xmd5.org
我有时去破解一些常用的密码,有一定的成功率