首页 > 文章

密码入门之md5加密

文章 06-01 0 入门 密码

md5加密

md5加密是常见的一种加密,今天对其加密过程及原理来进行深入理解与总结

什么是MD5

MD5是一种密码散列函数,由md4,md3,md2改进而来,因其普遍,快速,稳定的特点广泛应用于普通数据的加密保护领域,MD5算法会对原始的消息进行有损的压缩计算,无论要加密的字节长度有多长,都会生成一个固定长度的消息摘要(密文),所以MD5算法具有不可逆性,但MD5算法还是无法提供绝对的安全性,无法避免碰撞攻击,所以安全性没有那么高,一般用于普通数据的加密。

原理

MD5加密的原理简要叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
流程图如下图所示,每次的运算都有前一轮的128位结果值和当前的512bit值进行运算。

具体过程

具体过程如下:

1.首先对输入的原文进行处理,按位对数据进行补充。

为啥要按位对数据进行补充呢?我们要让原文长度(bit)对512求余的结果等于448,如果不等的话,就要对原文进行填充,首先在数据后补一个1bit,接着在后面补上一堆0bit,直到整个数据的位数对512求模的结果正好是448,就算这个数据的位数对512求模的结果正好是448也必须进行补位,意思是至少需要补一位,最多可能补512位。

2.对处理后的数据进行扩展长度。

在完成补位工作后,将一个表示数据原始长度的64 bit数(这是对原始数据没有补位前长度的描述,用二进制来表示)补在最后。当完成补位及补充数据的描述后,得到的结果数据长度正好是512的整数倍。也就是说长度正好是16个(32bit) 字的整数倍 。

3.初始化md存储器

MD5运算要用到一个128位的MD5缓存器,用来保存中间变量和最终结果。该缓存器又可看成是4个32位的寄存器A、B、C、D(被称为链接变量),初始化为 :
A : 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10

4.循环处理分组数据段

首先定义4个非线性函数F、G、H、I,对输入的报文运算以512位数据段为单位进行处理。对每个数据段都要进行4轮的逻辑处理,在4轮中分别使用4个不同的函数F、G、H、I。每一轮以ABCD和当前的512位的块为输入,处理后送入ABCD(128位)

处理过程中用到的参数及函数

1.F非线性函数.官方 MD5 所用到的函数有四种:
F(X,Y,Z)=(X&Y)|((~X)&Z)
G(X,Y,Z)=(X&Z)|(Y&(~Z))
H(X,Y,Z)=X^Y^Z
I(X,Y,Z)=Y^(X|(~Z))
(&是与,|是或,~是非,^是异或)
这些函数是这样设计的:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。
函数F是按逐位方式操作:如果X,那么Y,否则Z。函数H是逐位奇偶操作符。
在主循环下面 64 次子循环中,F、G、H、I 交替使用,第一轮 16 次使用 F,第二轮 16 次使用 G,第三轮 16 次使用 H,第四轮16 次使用 I。
2.Mj
Mj是第一步处理后的原文。在第一步中,处理后原文的长度是 512 的整数倍。把原文的每 512 位再分成 16 等份,命名为 M0~M15,每一等份长度 32。在 64 次子循环中,每 16 次循环,都会交替用到 M1~M16 之一。
3.ti
一个常量,在 64 次子循环中,每一次用到的常量都是不同的。
常数ti可以如下t选择:
在第i步中,ti是4294967296(2的32次方)*abs(sin(i))的整数部分,i的单位是弧度。
4.<<<S
左移 S 位,S 的值也是常量。
命名规则(s+方法名+第N个数)
SFF1=7; SFF2=12, SFF3=17; SFF4=22;
SGG1=5; SGG2=9, SGG3=14; SGG4=20;
SHH1=4; SHH2=11, SHH3=16; SHH4=23;
SⅡ1=6; SⅡ2=10, SⅡ3=15; SⅡ4=21;
设Mj表示消息的第j个子分组(从0到15),<<<s表示循环左移s位,则四种操作为:
FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<<s)
GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<<s)
HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<<s)
II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s)
总结一下主循环中的 64 次子循环,可以归纳为下面的四轮:
这四轮(64步)是:
第一轮:
FF(a,b,c,d,M0,7,0xd76aa478) s[0]=7, K[0] =0xd76aa478
FF(a,b,c,d,M1,12,0xe8c7b756) s[1]=12, K[1] =0xe8c7b756
FF(a,b,c,d,M2,17,0x242070db)
FF(a,b,c,d,M3,22,0xc1bdceee)
FF(a,b,c,d,M4,7,0xf57c0faf)
FF(a,b,c,d,M5,12,0x4787c62a)
FF(a,b,c,d,M6,17,0xa8304613)
FF(a,b,c,d,M7,22,0xfd469501)
FF(a,b,c,d,M8,7,0x698098d8)
FF(a,b,c,d,M9,12,0x8b44f7af)
FF(a,b,c,d,M10,17,0xffff5bb1)
FF(a,b,c,d,M11,22,0x895cd7be)
FF(a,b,c,d,M12,7,0x6b901122)
FF(a,b,c,d,M13,12,0xfd987193)
FF(a,b,c,d,M14,17, 0xa679438e)
FF(a,b,c,d,M15,22,0x49b40821)
第二轮:
GG(a,b,c,d,M1,5,0xf61e2562)
GG(a,b,c,d,M6,9,0xc040b340)
GG(a,b,c,d,M11,14,0x265e5a51)
GG(a,b,c,d,M0,20,0xe9b6c7aa)
GG(a,b,c,d,M5,5,0xd62f105d)
GG(a,b,c,d,M10,9,0×02441453)
GG(a,b,c,d,M15,14,0xd8a1e681)
GG(a,b,c,d,M4,20,0xe7d3fbc8)
GG(a,b,c,d,M9,5,0x21e1cde6)
GG(a,b,c,d,M14,9,0xc33707d6)
GG(a,b,c,d,M3,14,0xf4d50d87)
GG(a,b,c,d,M8,20,0x455a14ed)
GG(a,b,c,d,M13,5,0xa9e3e905)
GG(a,b,c,d,M2,9,0xfcefa3f8)
GG(a,b,c,d,M7,14,0x676f02d9)
GG(a,b,c,d,M12,20,0x8d2a4c8a)
第三轮:
HH(a,b,c,d,M5,4,0xfffa3942)
HH(a,b,c,d,M8,11,0x8771f681)
HH(a,b,c,d,M11,16,0x6d9d6122)
HH(a,b,c,d,M14,23,0xfde5380c)
HH(a,b,c,d,M1,4,0xa4beea44)
HH(a,b,c,d,M4,11,0x4bdecfa9)
HH(a,b,c,d,M7,16,0xf6bb4b60)
HH(a,b,c,d,M10,23,0xbebfbc70)
HH(a,b,c,d,M13,4,0x289b7ec6)
HH(a,b,c,d,M0,11,0xeaa127fa)
HH(a,b,c,d,M3,16,0xd4ef3085)
HH(a,b,c,d,M6,23,0x04881d05)
HH(a,b,c,d,M9,4,0xd9d4d039)
HH(a,b,c,d,M12,11,0xe6db99e5)
HH(a,b,c,d,M15,16,0x1fa27cf8)
HH(a,b,c,d,M2,23,0xc4ac5665)
第四轮:
Ⅱ(a,b,c,d,M0,6,0xf4292244)
Ⅱ(a,b,c,d,M7,10,0x432aff97)
Ⅱ(a,b,c,d,M14,15,0xab9423a7)
Ⅱ(a,b,c,d,M5,21,0xfc93a039)
Ⅱ(a,b,c,d,M12,6,0x655b59c3)
Ⅱ(a,b,c,d,M3,10,0x8f0ccc92)
Ⅱ(a,b,c,d,M10,15,0xffeff47d)
Ⅱ(a,b,c,d,M1,21,0x85845dd1)
Ⅱ(a,b,c,d,M8,6,0x6fa87e4f)
Ⅱ(a,b,c,d,M15,10,0xfe2ce6e0)
Ⅱ(a,b,c,d,M6,15,0xa3014314)
Ⅱ(a,b,c,d,M13,21,0x4e0811a1)
Ⅱ(a,b,c,d,M4,6,0xf7537e82)
Ⅱ(a,b,c,d,M11,10,0xbd3af235)
Ⅱ(a,b,c,d,M2,15,0x2ad7d2bb)
Ⅱ(a,b,c,d,M9,21,0xeb86d391)
5.将结果进行拼接
最后将A,B,C,D分别加上a,b,c,d。然后用下一分组数据继续运行算法,最后的输出是A,B,C和D的级联。
MD5在应用方面是非常广的,经常用于密码管理,电子签名等方面。

  • 诅咒密码任务必须做吗
  • 初学者使用的魔方口诀 魔方新手入门图解7步
  • 登陆http://192.168.0.1密码大全
  • 118是什么意思:118代表什么爱情密码
  • 行李箱密码锁忘记密码怎么开锁:拉杆箱忘了密码怎么办
  • 无线密码怎么改:wifi密码重置设置
  • apple id密码怎么改:如何修改apple ID密码
  • wifi密码忘记了怎么办:家里的wifi密码忘了,应该如何找回
  • 无线网密码怎么改:怎样修改无线WiFi密码
  • 拼多多商家登录密码忘记了怎么办(拼多多商家号修改密码教程)
  • 本文地址:https://www.ytsfc.com/show-1-20009-0.html

    • 大结局为什么萧炎杀药老

      大结局为什么萧炎杀药老

      原著大结局为什么萧炎杀药老​1、原因就是萧炎自身的原因了。萧炎是远古八族之萧族的后人,萧炎手中的古玉是打开古帝遗迹的关键。收集古玉是药老他们一直的使命。所以,药老追...

    • 车标志识别图片大全  【图片】

      车标志识别图片大全 【图片】

      每一辆汽车都有自己的品牌标志,用于告诉大家它们的生产厂家。下面我们来认识一下一些比较常见的汽车标志,有不认识的小伙伴赶快记下来!中国汽车最著名的要属:奇瑞、吉利、长城、...

    • 达咩啥意思:达咩为什么不能随便说

      达咩啥意思:达咩为什么不能随便说

      哒咩什么意思达咩的意思是不行,不许,不可以的意思。达咩是日语的中文读音译字,是一句比较生活化的日常用语。日语常用语还有,晚安对长辈:お休みなさい(哦呀斯米那赛),再见:さようなら...

    • 水浒传人物介绍:水浒传15个人物介绍

      水浒传人物介绍:水浒传15个人物介绍

      水浒传15个人物介绍1, 及时雨,呼保义,宋江:及时雨:总在别人需要的时候出现 2,玉麒麟,卢俊义 ,麒麟是神兽,是百兽之长 富甲天下,仗义疏财3,智多星,吴用 智多星,聪明,智慧多多的上界星辰...

    评论底部pc
    评论底部 m

    豆豆的家

    http://www.ytsfc.com/

    '); })(); | 京ICP1234567-2号

    Powered By 电视大师网 XXX公司

    使用手机软件扫描微信二维码

    关注我们可获取更多热点资讯

    感谢小豆豆技术支持