浅谈消息摘要算法

       近日来学习通信相关技术,接触http,udp,tcp/ip协议,消息摘要算法,对称与非对称加密,数字证书等等。历经了http的“请求--响应”模式,udp的“做事”经常“不靠谱”,tcp/ip的“三次握手”连接,对称与非对称加密“各领风骚”,数字证书的安全可靠性,我现在最想来聊聊 消息摘要算法的那些事儿。
       消息摘要算法,是一种将任意长度的输入揉合从而产生长度固定的伪随机输入的算法。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体,它们都有如下特征:
       一,无论输入的消息有多长,通过消息摘要算法计算出来的消息摘要的长度总是固定的。
       二,消息摘要是“伪随机的”。因为,消息摘要算法的性质要求只要输入改变了,输出也必然跟着改变。也就是说,如果用相同的算法对相同的消息求两次摘要,那么其结果必然相同;如果输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同。
       三,消息摘要函数是无陷门的单向函数。也就是我们只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,有时候甚至根本就找不到任何与原信息相关的信息。你可能想说,我们可以尝试“暴力破解”,但实际上,这样做的话,我们要得到的信息的可能是无穷个消息分之一,可以认为“暴力破解”几乎无效。
       四,好的摘要算法是没有人能从中找到“碰撞”的。所谓“碰撞”就是,对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。换句话说就是,无法找到两条消息,使得它们的摘要恰好相同。下面就来谈谈它的应用。
       现今,消息摘要算法主要应用在“数字签名”领域。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。
以下来浅谈消息摘要算法的应用:
       数字签名(或者说“指纹”), 就是一个信息的摘要。数字签名保证了信息的完整性和不可否认性。完整性,是指“信宿”接收到的消息一定是“信源”发送的信息,而中间绝无任何更改;不可否认性,是指信源不能否认曾经发送过的信息。其实,通过数字签名还能实现对“信源”的身份识别(或者说“认证”),也就是能够确定“信源”是否是“信宿”意定的通信伙伴。 此外,数字签名应该具有:1,唯一性,也就是不同的消息的签名是不一样的;2,不可伪造性,即不可能找到另一个消息,使其签与已有的消息的签名一样;3,不可逆性,即无法根据签名还原被签名的消息的任何信息。以上的种种需要,恰恰都是消息摘要算法的特征,因此,消息摘要算法适合作为数字签名算法。
       在通信的道路上,探索的脚步从未敢停息,认清自己所处的位置,找准感兴趣的方向,我才刚刚出发,但我坚信终会有所收获!
  

你可能感兴趣的:(算法)