一、若我们定义一个函数 ,原型为:
String MD5 ( Information info)
其中Information 表示任意长度的信息,注意是任意长度的。 实现这个函数的最终要求:
1、对于相同的输入信息,产生的返回值结果相同;对于不同的信息得到得结果决不相同。(后者由于我
国王小云教授等人的研究成果已经不成立,也就是说两个不同的信息可能会产生“碰撞”,得到的结
果是一样的。)
2. 算法不可逆转,即使拥有返回结果和算法细节,也不可能推导出输入的初始信息。
下面是MD5算法对一些特定值产生的返回值:
md5 ("") = d41d8cd98f00b204e9800998ecf8427e
md5 ("a") = 0cc175b9c0f1b6a831c399e269772661
md5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
md5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
md5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
md5("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789")
=d174ab98d277d9f5a5611c2c9f419d9f
对于第二个要求,就是说,给你一个32位的字符串d41d8cd98f00b204e9800998ecf8427e,如果不事先告诉你,那你一辈子都别想得出它的输入信息是一个空白字符。
二、一些典型的应用。
对一段信息(message)产生信息摘要(message-digest),以防止被篡改。比如,在unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:
md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
这就是tanajiya.tar.gz文件的数字签名。md5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的md5信息摘要。如果在以后传播这个文件的过程中, 无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算md5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。
防止抵赖。这需要有第三方权威机构的参与。A 写了个文件,权威机构对改文件用MD5算法产生摘要信息做好记录。若以后A说这文件不是我写的,权威机构只需对改文件重新产生摘要信息跟记录在册的摘要信息进行比对,相同的话,就证明是A写的了。这就是所谓的“数字签名”了。
加密信息。比如在unix系统中用户的密码就是以md5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成md5值,然后再去和保存在文件系统中的md5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
分享到:
相关推荐
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希算法,用于生成固定长度的消息摘要。MD5算法由Ronald L. Rivest于1991年在MIT Laboratory for Computer Science和RSA Data Security Inc开发,它是基于MD2、...
The MD5 Message-Digest Algorithm Status of this Memo This memo provides information for the Internet community. It does not specify an Internet standard. Distribution of this memo is unlimited. ....
### MD5消息摘要算法 #### 执行概要 本文档详细介绍了MD5消息摘要算法,该算法接收任意长度的消息作为输入,并输出一个128位的“指纹”或“消息摘要”。理论假设认为,计算上难以产生具有相同消息摘要的两条消息,...
ASP.NET中的MP5通常指的是MD5(Message-Digest Algorithm 5),而非MP5本身。MD5是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计,用于生成一个特定数据块的固定长度数字摘要。在描述中提到的...
MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 将数据(如汉字)运算为另一固定...
RFC1321文档详细描述了MD5消息摘要算法,这是一种广泛使用的算法,最初由Ronald Rivest设计,并在1992年由RFC官方发布。MD5算法从输入的任意长度的消息中产生一个128位(即16字节)的消息摘要或指纹。该算法在设计时...
MD5算法的原理与历史.pdf MD5算法的数学基础.pdf MD5算法的结构与流程.pdf MD5算法的实现:C语言版.pdf MD5算法的实现:Python版.pdf MD5算法的实现:Java版.pdf MD5算法的碰撞攻击原理.pdf MD5算法的安全性评估.pdf...
MD5(Message-Digest Algorithm 5)和SHA-1(Secure Hash Algorithm 1)是两种广泛使用的摘要算法,它们可以将任意长度的数据转化为固定长度的摘要值。这个摘要值具有抗篡改性,即使原始数据发生微小变化,生成的...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转化为一个固定长度的摘要值,通常是一个128位的二进制数,通常用32个十六进制数字...
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...
在网络安全领域,信息摘要算法(Message Digest Algorithm)是一种极其重要的技术手段,主要用于确保数据的完整性和一致性。它通过将任意长度的数据输入转换为固定长度的输出,这一过程通常被称为“摘要”或“哈希值...
MD5消息摘要算法,全称为Message-Digest Algorithm 5,是由美国计算机科学家Ronald Rivest在1991年设计的。它是一种广泛应用于数据校验、文件完整性验证的哈希函数,尤其在IT和网络安全领域中具有重要的地位。MD5...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家罗纳德·李维斯特设计。它产生一个128位(16字节)的数字指纹,通常以32个十六进制字符的形式表示。MD5的主要用途是验证数据的完整性,...
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的128位(16字节)摘要值。这个摘要值具有不可逆性,即无法从摘要恢复原始数据,因此常用于数据完整性校验和...
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的...
C语言实现的MD5信息摘要算法源码,通常包括以下几个关键部分: 1. **初始化函数**:MD5算法开始时,会初始化四个32位的变量,A、B、C和D,以及一个64字节的缓冲区。这些变量的初始值是预定义的常量,用于后续的计算...
MD5是一种广泛使用的加密散列函数,全称为“Message-Digest Algorithm 5”,设计初衷是为数字信息提供一种可靠的校验机制。它将任意长度的数据转换成固定长度的128位(16字节)的哈希值,通常以32位十六进制数的形式...
MD5 算法协议
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为一个固定长度的输出,通常是一个128位的二进制数,通常以32个十六进制数字的...