MD5算法
2021-01-21 14:12
标签:加法 就是 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
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