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等攻击的影响最小。
Copyright © 2019-2020 zhiniaoyun.net. All Rights Reserved. 知鸟云 版权所有 河北知鸟科技有限公司 冀ICP备19033293号