美文网首页
常见算法之MD5算法

常见算法之MD5算法

作者: CayChan | 来源:发表于2018-01-01 21:42 被阅读0次

MD5算法(Message-Digest algorithm 5)

不同于BASE64算法,md5是一种摘要算法。md5算法可以将任意长度的字符串生成128bit的二进制哈希值,也就是32位的16进制数。

所以,我们看到的md5加密之后的加密串都是由0~9,a~f这16个字符组成的,且长度为32个字符。

加密过程

md5算法的加密过程分为四步:1.处理原文;2.设置初始值;3.循环加工;4.拼接结果。

其中,第2、4步很简单,第1步需要填充原文,难点和重点在于第3步。

1. 处理原文

这步将要加密的信息bit数处理成512的倍数。

先对明文字符串取余,如果余数不等于448,就对原文进行填充。填充的方法是第1位为1,其余置0。填充后,信息的长度=512 * M + 448。 512-448=64位的长度用来记录原文真正的长度。

处理后,原文的真正长度为512 * (M + 1)。

2. 设置初始值

md5的哈希结果为128bit,将128bit按照每组32bit分成4组。每组是由4个初始值A、B、C、D经过不断演变得到的。

官方文档中,4个初始值为16进制数:

A=0x1234567;

B=89abcdef;

C=fedcba98;

D=76543210;

3. 循环加工

分为主循环和子循环。每次循环由4个旧A、B、C、D值生成4个新的A、B、C、D值。

主循环一共M次(原文长度 / 512)。

子循环一共512 / 32 * 4 = 64次。

(循环过程略,巨复杂)

4. 拼接结果

将3中生成的A、B、C、D拼接到一起,转换成字符串就是加密后的128bit加密串。

用途

由于明文只要发生一点改变,生成的md5值就会大相径庭,所以md5一般用在用户登录、支付等业务。用来校验参数是否被篡改过

加密时,除了正常的参数外,加上一个额外的参数sign。将其他参数和双方约定的密钥key按照一定规则组合起来,生成一段信息,再利用md5算法将这段信息加密成密文,赋给sign。

解密时,按照同样的规则生成一段密文,校验生成的密文和sign参数是否相同。由此来判断其他参数是否被篡改过。

破解

md5算法理论上可破解,比如:

  1. 暴力枚举法(时间);
  2. 字典法(空间);
  3. 彩虹表法;
  4. 差分攻击(国人的贡献);

但对md5的破解并非是还原成原文,实际上是一种“碰撞”,比如消息A的md5值是M,消息B的md5值也是M。那么,就算原文是A,只要找到了B,也是一种破解。

假设md5算法的哈希函数是H(x)。

H(A) = M;

H(B1) = M; H(B2) = M; H(B3) = M; ......

任意一个Bx都是对A的破解。

相关文章

  • iOS中DES与MD5加密方案

    MD5算法和DES算法是常见的两种加密算法。 MD5: MD5是一种不可逆的加密算法,按我的理解,所谓不可逆,就是...

  • 常见算法之MD5算法

    MD5算法(Message-Digest algorithm 5) 不同于BASE64算法,md5是一种摘要算法。...

  • python加密

    python中hashlib提供了常见的摘要算法,如MD5,SHA1等等 什么是摘要算法呢?摘要算法又称哈希算法\...

  • 52. 摘要算法hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法...

  • hashlib模块-加密算法

    hashlib 模块提供了常见的摘要算法,如MD5,SHA1 摘要算法(又称哈希算法、散列算法):原理:它通过一个...

  • 2019-06-19 hashlib

    摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。什么是摘要算法呢?摘要算法...

  • hashlib库 -摘要算法,

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法...

  • 第一篇、MD5算法和SHA-1算法

    目录一、MD5算法 1、MD5算法是什么? 2、MD5算法的优点 3、MD5算法的不足 4、MD5加密的应用场景 ...

  • 摘要算法

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。摘要算法又称哈希算法、散列算法。它通过一...

  • 【Python入门】27.常用内置模块之 hashlib和hma

    摘要::hashlib模块中包含常见的摘要(哈希)算法,如MD5,SHA1等;采用MD5加盐算法实现用户登录的验证...

网友评论

      本文标题:常见算法之MD5算法

      本文链接:https://www.haomeiwen.com/subject/xlrxnxtx.html