码迷,mamicode.com
首页 > 编程语言 > 详细

MD5算法

时间:2020-05-15 16:14:52      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:加法   就是   http   com   线性   切割   摘要   循环   分组   

MD-(Message-digest消息摘要)

MD2、MD4、MD5都产生一个128位的消息摘要。

MD5

1.消息填充  填充一个1和若干个0及64比特的(未填充)消息长度,使得总长度为512比特的整数倍.

2.消息分块与初进入MD结构进行送代压缩,到所有分块运算完为止

 

将消息填充,使其满足分组恰好为512bit的要求,M1,M2,...Mt,然后将初始值,与M1输入压缩函数F中,得到结果,然后将结果与M2输入压缩函数F中,不断迭代,最后得到的结果就是哈希值。

技术图片

 

 

MD5压缩函数

输入:128bit的上一个结果           512bit的下一分组

512bit消息分组和128bit链接变量CVi-1,经过四轮迭代混合,在与输入链接变量的副本CVi-1进行模加,输出链接变量CVi

 

技术图片

注:A=0x01234567  B=0x89abcdef  C=0xfedcba98  D=0x76543210

每个512位分组又划分为16个32位子分组,每轮很相似,每轮进行16次操作。

 

MD5的步函数

512比特消息块切割成16个32比特的字,使用次序毎轮各不相同

每一轮迭代又分为16步,每步输入寄存器的当前状态,消息的一个32比特分块,及一个32比特常数,更新寄存器的值

技术图片

每次移位都是左循环移动S位                                                                        改变每轮移位量 以实现更快的雪崩效应

 

MD5的步函数

四轮迭代中步函数所使用不同的非线性函数,分别为(这四个函数也没道理)       相比MD4 从三轮变为四轮

F(X,Y,Z)=(X∩Y)∪(┐X∩Z)

G(X,Y,Z)=(X∩Z)∪(Y∩┐Z)         相比MD4 改进 为了削弱对称性

H(X,Y,Z)=X⊕Y⊕Z

I(X,Y,Z)=Y⊕(X∪┐Z)

               改变了第二轮和第三轮访问消息子分组的顺序,使其形态更不相似

   

第i步使用的常数t[i]定义为0<i<64        

 t[i]=[232×abs(sin(i))        其中i的单位是弧度;[x]表示取x的整数部分

                 每步都有唯一的加法常数ti,消除任何输入数据的规律

每一步与上一步的结果相加,这样能更快的引起雪崩效应。(对于Hash码,雪崩效应是指少量消息位的变化会引起信息摘要的许多位变化)

 

https://www.jianshu.com/p/82729c87ef68

MD5算法

标签:加法   就是   http   com   线性   切割   摘要   循环   分组   

原文地址:https://www.cnblogs.com/sjyu/p/12870799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!