MD5加密算法

本文最后更新于:1 年前

MD5 Message Digest Algorithm 是对任意长度的消息进行运算,产生一个128位的消息摘要。

1.算法特点与作用

  • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  • 容易计算:从原数据计算出MD5值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  • MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

2.算法生成

  • 数据末尾填充0x80

  • 计算原始数据的长度

  • 用零填充直到数据的字节数是64的倍数为止 按照小端序存储

  • 把数据进行分组一组位64(512位)个字节 进行计算最终获得一个16个字节的MD5码

  • 初始化四个值 按照小端序存储

  • 进行一组数据的计算 定义临时变量并赋值 a = A b = B c = C d = D

  • 计算a的值

    • a = (a + F + K[i] +M[g]) << s[i]) + b

  • 交换数据

    • b = a ; c = b ; d = c ; a = d

  • 循环上述两个步骤64次

  • 计算

    • A = A + a ; B = B + b ; C = C + c ; D = D + d

  • 更新中 a , b , c , d 计算组二数据(更新第五步中的 a b c d)

当完成最后一组数据的计算获得 A : B : C : D以小端序组合获得最终16个字节就是MD5


MD5加密算法
https://wlpswmt.github.io/2023/03/22/MD5加密算法/
作者
Sivan Zhang
发布于
2023年3月22日
许可协议