< 返回新闻公告列表

详解MD5算法及其优缺点

发布时间:2020-03-30 13:32:23    来源: 知鸟云

MD5信息摘要算法是Ron Rivest开发的可产生128位信息摘要的信息摘要算法的第五个版本。MD5比其他版本的信息摘要要快得多,信息摘要采用512位块的纯文本格式,该明文又分为16个块(每个32位)并生成128位信息摘要,该摘要由四个块组成,每个块32位。MD5通过五个步骤生成信息摘要,即填充,附加长度,将输入分为512位块,将链接变量初始化为一个处理块和4个回合,并在每次迭代中使用不同的常量。

 

使用MD5算法

开发MD5算法的主要动机是安全性,因为它可以接受任意大小的输入,并且如果具有128位哈希值,则可以产生输出。被认为是密码安全的MD5应该满足两个要求:

无法生成不能产生相同哈希函数的两个输入。不可能生成具有相同哈希值的消息。

最初,MD5被开发为存储密码的一种单向散列,并且某些文件服务器还提供了文件的预先计算的MD5校验和,以便用户可以将下载文件的校验和与其进行比较。大多数基于Unix的操作系统在其分发包中都包含MD5校验和实用程序。

MD5算法是如何工作的?

众所周知,MD5产生128位哈希值的输出。此输入的加密的任何尺寸的成散列值经历5个步骤和每个步骤都有一个预定义任务。

步骤1:附加填充位

填充意味着向原始消息添加额外的位。因此,在MD5中,原始消息将被填充,以使它的位长度与448模512一致。完成填充操作是使总位少64位,即512位长度的倍数。即使原始消息的长度已经与448模512一致,也会执行填充。在填充位中,唯一的第一位是1,其余位是0。

步骤2:附加长度

填充后,在末尾插入64位,用于记录原始输入的长度。模2 ^ 64。此时,所得消息的长度为512位的倍数。

步骤3:初始化MD缓冲区

四字缓冲区(A,B,C,D)用于计算信息摘要的值。这里的A,B,C,D是32位寄存器,并按以下方式初始化

词A

01

23

45

67

词B

89

Ab

Cd

Ef

词C

Fe

Dc

Ba

98

词D

76

54

32

10

步骤4:以16个字的块处理消息

MD5使用辅助功能,这些辅助功能将输入作为三个32位数字并产生32位输出。这些函数使用逻辑运算符,例如OR,XOR,NOR。

F(X, Y, Z)

XY v not (X)Z  

G(X, Y, Z)

XZ v Y not (Z)

H(X, Y, Z)

X xor Y xor Z

I(X, Y, Z)

Y xor (X v not (Z))

   

使用此辅助缓冲区将四个缓冲区的内容与输入混合,并使用16个基本操作执行16个回合。

 输出-

毕竟,回合已执行了缓冲区A,B,C,D,其中包含从低位A开始到高位D结束的MD5输出。

例:

输入:This is an article about the cryptography algorithm    

输出:e4d909c290dfb1ca068ffaddd22cbb0    

MD5算法的优缺点:

MD5算法很有用,因为与存储可变长度的大文本相比,比较和存储这些较小的哈希值更容易。MD5算法是一种广泛使用的用于单向哈希的算法,该哈希用于验证而不必给出原始值。Unix系统使用 MD5算法以128位加密格式存储用户密码。MD5算法被广泛用于检查文件的完整性。而且,使用该算法很容易生成原始消息的信息摘要。MD5算法可以执行任意位数的消息的信息摘要,不限于MD的和,MD5sum仅限八位字节。但是多年来,MD5容易出现哈希冲突弱点,即可以为两个不同的输入创建相同的哈希函数。MD5对这些冲突攻击没有提供任何安全性。SHA(Secure Hash Algorithm,可产生160位信息摘要,并由NSA设计为数字签名算法的一部分)现已取代MD5,因为它不易产生SHA,现在已在密码学领域被接受以用于生成哈希函数-我发生碰撞,直到现在还没有发生碰撞。而且,MD5算法比优化的SHA算法要慢得多。SHA比MD5算法安全得多,而且,与MD5不同,它可以用超出速率的现有技术来实现。如今,考虑到更高的数据安全性(例如SHA256(可生成文本的256位签名)),新的哈希算法正在市场上出现。

总结

如今,随着所有数据在云和Internet上的存储,将这些数据的安全性放在第一位非常重要。应该采用最安全的算法来加密私有数据。最近的研究表明,SHA算法比MD5更为重要,因为MD5更容易受到碰撞攻击。尽管研究人员提出了新的算法,但这些算法安全且对SHA256等攻击的影响最小。


相关推荐