摘要算法
⑴ 摘要算法的介绍
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。
⑵ 摘要算法如何在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成功验证的摘要.这样使用摘要算法就防止了第三方对数据的篡改.
⑶ 解决中间人攻击的主要办法是什么呢 用des算法可以吗报文摘要算法呢ca认证有用吗
勿冲动;三思而后行。
⑷ 用java程序实现消息摘要算法,并生成一个数的消息摘要
import java.security.MessageDigest;
String myinfo="我的测试信息";
MessageDigest alg = MessageDigest.getInstance("MD5");
alga.update(myinfo.getBytes());
byte[] bytes = alga.digest();
⑸ 描述数字签名和消息摘要算法的异同
身份认证就是,像用户名密码、动态口令、USB Key认证等输入等一致。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
就是一个是用户自身确认真伪,一个是信息加密确定真伪
⑹ 摘要算法的特点是什么
“消息摘要”(Message Digest)是一种能产生特殊输出格式的算法,这种加密算法的特点是无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是“摘要”,被“摘要”的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是“不可逆”的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证,而不能作为原数据内容的加密方案使用,否则谁也无法还原。
⑺ 摘要算法的特点是什么
你想用什么算法都行,比如md5,sha1等,举个例子:
byte[]
digest
=
messagedigest.getinstance("md5").digest("这是很长很长的一大段文字。。。".getbytes("utf-8"));
这是很长很长的一大段文字,变成了32字节,就算实现了摘要
⑻ 报文摘要算法特性中哪两点最重要
hard to reverse
collison free
otherwise, the cryptosystem would be insure