​​​​​​​MD5加密原理

 

MD5是以512位的分组来处理输入的信息,并且将每一分组又划分成16个32  位的子分组,经过了一系列的处理后,算法的输出由四个32位的分组组成,将这 四个32位的分组结合后将生成一个128位的散列值。详细的MD5加密算法流程如 图6-13所示。

350b0b477f5e4a6ea9be7aa479e699c4.png

图6-13    MD5加密算法流程

下面介绍其中的关键步骤。

1.填充

 

 

 

 

 

在MD5算法中,首先需要将信息进行填充,使其位长对512求余后的结果等 于448 。即使符合上述条件,也必须进行填充。因此,信息的位长将被扩展至

N × 512+448 ,N是一个非负整数。计算原始消息的长度(不包含填充部分),并 且附加到填充位与消息之后。该长度值为64位二进制数表示的填充前信息的长  度。

2.信息分组

首先将数据按每512位为一组进行分组,如图6-14所示,再把每组里面分成16 个32位数据。

36bbb54a5f5a44a18297a051edad92f4.png

图6-14    将输入分组

3.初始化变量

初始化四个链接变量A 、B 、C 、D ,它们都是32位的数字,这些链接变量的 初始十六进制数值如下所示,低字节在前:

02ed353eaa52478caf45f4be8c647262.png

当设置好这四个链接变量后,就开始进入算法的四轮循环运算。将上面四个 链接变量复制到另外四个变量中:A到a ,B到b ,C到c ,D到d。

主循环有四轮,每轮循环都很相似,每一轮进行16次操作。每次操作对a、

b 、c和d的其中三个进行一次非线性函数运算,然后将所得结果加上第四个变量、 信息的一个子分组和一个常数,再将所得结果左移一个不确定的数,并加上a、

 

 

 

 

b 、c 、d之一。

以下是四轮循环中用到的四个非线性函数(每轮一个):

10bf869f63854565af04badb21cd3a53.png

所有这些操作完成之后,将A 、B 、C 、D分别加上a 、b 、c 、d ,然后用下一 分组的数据继续运行算法,最后MD5算法产生128位的输出是A 、B 、C 、D的级 联,其中低字节始于A ,高字节终于D 。至此,整个MD5算法处理结束。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值