`
wanjianfei
  • 浏览: 321482 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

消息摘要算法简介

阅读更多
消息摘要算法简介
一、什么是消息摘要算

消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络相同上使用。由于其加密计算的工作量相当可观,所以以前的这种算法通常只用于数据量有限的情况下的加密,例如计算机的口令就是用不可逆加密算法加密的。近年来,随着计算机相同性能的飞速改善,加密速度不再成为限制这种加密技术发展的桎梏,因而消息摘要算法应用的领域不断增加。

现在,消息摘要算法主要应用在“数字签名”领域,作为对明文的摘要算法。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。

二、消息摘要的特征

消息摘要是把任意长度的输入柔和而产生长度固定的伪随机输入的算法。消息摘要的主要特点有:

①无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出,SHA-1的变体可以产生192比特位和256比特位的消息摘要。一般认为,摘要的最终输出越长,该摘要算法就越安全。

②消息摘要看起来是“随机的”。这些比特看上去是胡乱的杂凑在一起的。可以用大量的输入来检验其输出是否相同,一般,不同的输入会有不同的输出,而且输出的摘要消息可以通过随机性检验。但是,一个摘要并不是真正随机的,因为用相同的算法对相同的消息求两次摘要,其结果必然相同;而若是真正随机的,则无论如何都是无法重现的。因此消息摘要是“伪随机的”。

③一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。这正是好的消息摘要算法所具有的性质:输入改变了,输出也就改变了;两条相似的消息的摘要确不相近,甚至会大相径庭。

④消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。当然,可以采用强力攻击的方法,即尝试每一个可能的信息,计算其摘要,看看是否与已有的摘要相同,如果这样做,最终肯定会恢复出摘要的消息。但实际上,要得到的信息可能是无穷个消息之一,所以这种强力攻击几乎是无效的。

⑤好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。即对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。或者说,无法找到两条消息,是它们的摘要相同。

三、消息摘要的应用——数字签名

一般地,把对一个信息的摘要称为该消息的指纹或数字签名。数字签名是保证信息的完整性和不可否认性的方法。数据的完整性是指信宿接收到的消息一定是信源发送的信息,而中间绝无任何更改;信息的不可否认性是指信源不能否认曾经发送过的信息。其实,通过数字签名还能实现对信源的身份识别(认证),即确定“信源”是否是信宿意定的通信伙伴。

数字签名应该具有唯一性,即不同的消息的签名是不一样的;同时还应具有不可伪造性,即不可能找到另一个消息,使其签名与已有的消息的签名一样;还应具有不可逆性,即无法根据签名还原被签名的消息的任何信息。这些特征恰恰都是消息摘要算法的特征,所以消息摘要算法适合作为数字签名算法。

数字签名方案是一种以电子形式存储消息签名的方法。一个完整的数字签名方案应该由两部分组成:签名算法和验证算法。一般地说,任何一个公钥密码体制都可以单独地作为一种数字签名方案使用。如RSA作为数字签名方案使用时,可以定义如下:

这种签名实际上就是用信源地私钥加密消息,加密后地消息即成了签体;而用对应地公钥进行验证,若公钥解密后的消息与原来的消息相同,则消息是完整的,否则消息不完整。它正好和公钥密码用于消息保密是相反的过程。因为只有信源才拥有自己地私钥,别人无法重新加密源消息,所以即使有人截获且更改了源消息,也无法重新生成签体,因为只有用信源的私钥才能形成正确地签体。同样信宿只要验证用信源的公钥解密的消息是否与明文消息相同,就可以知道消息是否被更改过,而且可以认证消息是否是确实来自意定的信源,还可以使信源不能否认曾将发送的消息。所以这样可以完成数字签名的功能

但这种方案过于单纯,它仅可以保证消息的完整性,而无法确保消息的保密性。而且这种方案要对所有的消息进行加密操作,这在消息的长度比较大时,效率使非常低的,主要原因在于公钥体制的加解密过程的低效性。所以这种方案一般不可取。

几乎所有的数字签名方案都要和快速高效的摘要算法(Hash函数)一起使用,当公钥算法与摘要算法结合起来使用时,便构成了一种有效地数字签名方案。

这个过程是:首先用摘要算法对消息进行摘要,然后在把摘要值用信源的私钥加密;接收方先把接收的明文用同样的摘要算法摘要,形成“准签体”,然后再把准签体与用信源的公钥解密出的“签体”进行比较,如果相同就认为消息是完整的,否则消息不完整。

这种方法使公钥加密只对消息摘要进行操作,因为一种摘要算法的摘要消息长度是固定的,而且都比较“短”(相对于消息而言),正好符合公钥加密的要求。这样效率得到了提高,而其安全性也并未因为使用摘要算法而减弱。

分享到:
评论

相关推荐

    最新消息摘要算法

    根据给定的信息,我们需要讨论有关消息摘要算法、尤其是NIST(美国国家标准与技术研究院)选定的最新消息摘要算法的知识点,即SHA3(安全哈希算法3)标准。 首先,关于NIST和消息摘要算法,美国国家标准与技术研究...

    ssl加密算法、消息摘要算法[归纳].pdf

    SSL/TLS协议结合了多种密码学技术,包括加密算法、消息摘要算法(哈希算法)以及数字签名等,确保了通信的安全性。 1. 加密算法: 加密算法是SSL/TLS协议的核心组成部分,分为对称加密和非对称加密两种。 - 对称...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    消息摘要算法在Java Web系统中的应用.pdf

    消息摘要算法在 Java Web 系统中的应用 在 Java Web 系统中,消息摘要算法是一种非常重要的安全技术,主要用于保护用户的敏感信息,如密码、用户名等。随着 Java Web 的广泛应用,系统中的信息安全性也变得越来越...

    MD5消息摘要算法

    MD5消息摘要算法,全称为Message-Digest Algorithm 5,是由美国计算机科学家Ronald Rivest在1991年设计的。它是一种广泛应用于数据校验、文件完整性验证的哈希函数,尤其在IT和网络安全领域中具有重要的地位。MD5...

    信息摘要算法

    ### 信息摘要算法 在网络安全领域,信息摘要算法(Message Digest Algorithm)是一种极其重要的技术手段,主要用于确保数据的完整性和一致性。它通过将任意长度的数据输入转换为固定长度的输出,这一过程通常被称为...

    消息摘要函数 SHA-1 算法的 数据填充和扩展

    消息摘要函数 SHA-1 算法的 数据填充和扩展

    20120218_消息摘要算法示例(go和python示例)1

    消息摘要算法是信息安全领域中用于验证数据完整性的关键技术,它们可以将任意长度的输入(也称为预映射或消息)转换为固定长度的输出,通常称为摘要或哈希值。这个过程是不可逆的,即无法从摘要恢复原始数据。在给定...

    信息摘要算法实例 MD5/SHA-1摘要生成算法

    信息摘要算法是信息安全领域中的重要概念,主要用于验证数据的完整性和一致性。MD5(Message-Digest Algorithm 5)和SHA-1(Secure Hash Algorithm 1)是两种广泛使用的摘要算法,它们可以将任意长度的数据转化为...

    SHA1 摘要算法C语言代码

    从 RFC3174 文档摘抄下来的 SHA1 摘要算法的C语言实现代码

    MD5 摘要算法C语言实现

    MD5 摘要算法的C语言实现,从 RFC1321 中摘出来的算法实现

    MD消息摘要算法实现及改进.doc

    MD消息摘要算法实现及改进.doc

    Java实现MD5消息摘要算法

    Java实现MD5消息摘要算法 MD5消息摘要算法是一种不可逆的消息摘要算法,它可以将任意长度的输入数据转换为固定长度的输出数据。Java语言提供了对MD5消息摘要算法的支持,可以通过使用java.security.MessageDigest类...

    java 加解密算法,摘要算法和数字签名算法

    包含Base64 ...包含摘要算法:MD2,MD4,MD5,SHA1,SHA2(SHA-224,SHA-256,SHA-384,SHA-512) 数字签名算法:RSA,DSA,ECDSA 详情请查看:http://blog.csdn.net/baidu_34012226/article/details/53331147

    哈希摘要算法编程设计源代码

    哈希摘要算法在信息技术领域扮演着至关重要的角色,它们被广泛应用于数据完整性验证、数字签名、文件校验、密码学等多个场景。哈希函数能够将任意长度的数据转换为固定长度的输出,通常称为哈希值或摘要。这些值具有...

    国密算法(国家商用密码算法简介).pdf

    消息摘要算法用于确保数据的完整性,它通过一个固定长度的字符串来标识数据。例如SM3。 5. 其他算法 - ZUC是一种伪随机数生成器,用于加密通信,支持128位的密钥长度。 - LFSR(线性反馈移位寄存器)是伪随机序列...

    摘要签名和验证算法编程

    在接收到数据和数字签名后,接收者会使用相同的摘要算法对数据计算摘要,然后使用发送者的公钥解密接收到的签名,得到另一个摘要。如果这两个摘要相匹配,那么可以确定数据是完整且来自可信的发送者。 编程实现:在...

    SHA1摘要算法-C语言

    SHA1算法基于消息块处理和循环结构,将输入消息分割成512位的消息块,然后对每个消息块进行一系列复杂的数学运算,包括位操作、异或、加法等,最终生成160位的摘要值。这个过程涉及四个32位的中间变量A、B、C、D和一...

    Java加密 消息摘要算法SHA实现详解.zip

    消息摘要算法(如SHA)是其中的一种加密手段,用于验证数据的完整性和防止篡改。本文将深入探讨SHA(Secure Hash Algorithm)在Java中的实现,并提供详细的知识点解析。 SHA全称为安全哈希算法,它是一种非对称加密...

    算法设计摘要

    算法设计摘要算法设计摘要算法设计摘要算法设计摘要算法设计摘要算法设计摘要

Global site tag (gtag.js) - Google Analytics