淘先锋技术网

首页 1 2 3 4 5 6 7

MD5 消息摘要算法是由 Ron Rivest 开发的消息摘要算法的第 5 版,用于生成 128 位消息摘要。MD5 比其他版本的消息摘要要快得多,它采用 512 位块的明文,将其进一步分为 16 个块,每个块 32 位,并产生 128 位的消息摘要,这是一组四个块,每个 32 位。MD5通过五个步骤产生消息摘要,即填充、追加长度、将输入分成512位的块、初始化链接变量一个过程块和4轮,并在每次迭代中使用不同的常量it。

MD5算法的使用

它的开发主要出于安全考虑,因为它接受任何大小的输入并生成 128 位哈希值的输出。要被认为是加密安全的,MD5 应该满足两个要求:

1.不可能生成不能产生相同散列函数的两个输出

2.不可能生成具有相同散列值的消息

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

MD5 算法如何工作?
众所周知,MD5 产生一个 128 位散列值的输出。这种将任何大小的输入
加密为哈希值的过程都经过 5 个步骤,每个步骤都有其预定义的任务

第一步:附加填充位
填充意味着向原始消息添加额外的位。因此,在 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位寄存器,初始化方式如下

第 4 步:处理 16 字块中的消息
MD5 使用辅助函数,将输入作为三个 32 位数字并产生 32 位输出。这些函数使用 OR、XOR、NOR 等逻辑运算符。

 

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

  输出-

毕竟,轮次已经执行,缓冲区 A、B、C、D 包含从低位 A 开始到高位 D 结束的 MD5 输出。

比如:

MD5算法的优缺点
以下是解释的优点和缺点:

MD5 算法很有用,因为比较和存储这些较小的散列比存储大的可变长度文本更容易。它是一种广泛使用的单向哈希算法,用于验证而不必给出原始值。Unix 系统使用 MD5 算法以 128 位加密格式存储用户的密码。MD5 算法广泛用于检查文件的完整性。
此外,使用该算法很容易生成原始消息的消息摘要。它可以执行具有任意位数的消息的消息摘要;它不限于 8 的倍数的消息,不像 MD5sum,它仅限于八位字节。
但多年来,MD5 容易出现哈希冲突的弱点,即可能为两个不同的输入创建相同的哈希函数。MD5 不提供针对这些碰撞攻击的安全性。代替 MD5,SHA(安全哈希算法,产生 160 位消息摘要,由 NSA 设计成为数字签名算法的一部分)现在在密码学领域被接受用于生成哈希函数,因为它不容易产生 SHA -I 碰撞,直到现在还没有产生碰撞。
而且,它比优化的SHA算法慢很多。SHA比MD5算法安全得多,而且它可以在现有技术中以超速率实现,不像MD5。如今,市场上出现了新的哈希算法,牢记更高的数据安全性,例如 SHA256(生成 256 位文本签名)。
结论
如今,由于所有数据都存储在云端和互联网上,因此必须将数据安全放在首位。应采用最安全的算法对隐私数据进行加密。最近的研究表明,SHA 算法比 MD5 更重要,因为 MD5 更容易受到碰撞攻击。然而,研究人员正在提出新的算法,这些算法是安全的并且最不容易受到像 SHA256 这样的攻击。

喜欢的点赞关注收藏哦~