什么是 MD5 算法?2024 年 8 月 28 日 | 阅读 6 分钟 密码学是指以确保只有预期的接收者才能解密和处理的方式保护信息和通信安全的过程。因此,可以防止未经授权的各方访问信息。“密码学”是“crypt”(意思是“隐藏”)和“graphy”(意思是“写作”)这两个词的组合。密码学中用于保护数据的方法源于数学思想和一组基于规则的计算(称为算法),以改变通信的方式,使其难以破译。这些算法用于创建加密密钥、数字签名、数据隐私保护、互联网上的在线浏览以及信用卡和借记卡购买等私人交易的安全性。 密码学技术: 在计算机时代,密码学通常与将纯文本转换为密文联系在一起,密文是只有预期接收者才能解码的文本。此过程称为加密。解密是将加密文本转换为纯文本的过程。 以下是密码学功能列表信息只能由预期的接收者查看,而其他任何人都无法查看。这被称为机密性。信息在存储或发送给发送者和预期的接收者之间时,无法更改,而不会注意到新信息的添加。不可否认性:信息创建者/发送者无法随后撤回其传播信息的愿望。身份验证:验证发送者和接收者的身份。此外,验证信息的来源和目的地。 MD5 算法MD5 消息摘要技术是一种常用的哈希函数,它产生一个 128 位的哈希值。 Ronald Rivest 于 1991 年创建了 MD5,以取代较旧的哈希函数 MD4,并在 1992 年的 RFC 1321 中定义了它。 作为校验和,MD5 可用于确保数据完整性并防止其意外损坏。已经发现,这种历史上使用的加密哈希算法存在一些严重的缺陷。它仍然可用于各种非加密任务,例如在分区数据库中定位特定密钥的分区,并且甚至可能更受欢迎,因为它比更现代的安全哈希算法需要更少的 CPU 功率。 麻省理工学院的 Ronald Rivest 教授创建了许多消息摘要算法,包括 MD5 (Rivest, 1992)。在分析研究表明 MD4 可能不安全后,Rivest 于 1991 年创建了 MD5 作为 MD4 的安全替代方案。 (Hans Dobbertin 后来确实发现了 MD4 的缺陷。) Den Boer 和 Bosselaers 于 1993 年通过识别 MD5 压缩函数的“伪冲突”,或者产生相同摘要的两个初始化向量,提供了一个早期的(尽管是受限的)结论。 1996 年,Dobbertin (Dobbertin, 1996) 发现了 MD5 压缩函数的碰撞。尽管这次攻击并未针对整个 MD5 哈希算法,但对于密码学家来说,建议切换到 SHA-1 (它也被破坏) 已经足够接近了。哈希值的大小 (128 位) 足够短,可以允许生日攻击的可能性。 2004 年 3 月启动了一项名为 MD5CRK 的分布式工作,旨在通过使用生日攻击找到冲突来证明 MD5 的实际脆弱性。 MD5 算法的使用
MD5 算法经过以下步骤来操作 1. 添加填充位: 在第一阶段,将填充位添加到原始消息中,以便总消息长度比 512 的精确倍数短 64 位。考虑接收一条 1000 位的消息。现在我们需要通过添加填充位来修改原始消息。在这里,我们将用 472 位填充原始消息。在添加填充位之后,原始消息/第一步的输出将是 1472,它比 512 的精确倍数 (即 512*3 = 1536) 少 64 位。 长度(原始消息 + 填充位)= 512 * i - 64,其中 i = 1,2,3 . . . 2. 添加长度位:在此步骤中,我们向前一步的输出添加长度位,以将位数增加到 512 的完美倍数。在这种情况下,我们仅将 64 位长度位添加到第一步的结果中。即,第一步的输出等于 512 * n - 64 长度位。 在添加这两个之后,我们将得到 512 * n,它是 512 的精确倍数。 3. 初始化 MD 缓冲区:在这里,我们使用 J、K、L 和 M 缓冲区。每个缓冲区的大小为 32 位。 4. 方法 MD5 算法最关键的阶段是每个 512 位块。在这种情况下,执行 4 轮,总共进行 64 次操作。第一轮将进行 16 次操作,第二轮将进行 16 次操作,第三轮将进行 16 次操作,第四轮将进行 16 次操作。例如,我们对第一轮应用 F 函数,对第二轮应用 G 函数,对第三轮应用 H 函数,对第四轮应用 i 函数。对于计算函数,我们使用逻辑门,如 OR、AND、XOR 和 NOT。我们为每个函数使用三个缓冲区 - K、L 和 M。 - F(K,L,M) = (K AND L) OR (NOT K AND M) - G(K,L,M) = (K AND L) OR (L AND NOT M) - H(K,L,M) = K XOR L XOR M - I(K,L,M) = L XOR (K OR NOT M) 现在已经应用了该函数,我们将对每个块做一些事情。要进行活动,我们需要 5. 现在将输入作为初始化 MD 缓冲区,即 J、K、L、M。K 的输出将馈入 L,L 将馈入 M,M 将馈入 J。在执行此操作后,我们现在执行一些操作以找到 J 的输出。 在所有阶段之后,步骤 J 的结果将被放入步骤 K。现在将对所有 G、H 和 I 函数遵循相同的过程。在完成所有 64 次操作后,我们将获得我们的消息摘要。 输出 在执行所有轮之后,缓冲区 J、K、L 和 M 包含 MD5 输出,从较低位 J 开始,到较高位 M 结束。 输出 Hash of the input string: 922547e866c89b8f677312df0ccec8ee MD5 算法的应用
MD5 算法的优点
MD5 算法的缺点
下一主题什么是 SHA-256 算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。