MD5的实现原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5的实现原理相关的知识,希望对你有一定的参考价值。

参考技术A

1.常见的三种加密算法及区别
2.加密算法在HTTPS中的应用
3.MD5的实现原理

对源数据进行填充,使其变成一个(N*512-64)位大小的数据
填充方法:在消息后面进行填充,填充第一位为1,其余为0。

再填充上原数据的长度,可用来进行的存储长度为64位。如果数据长度大于2^64,则只使用其低64位的值
最终数据长度就是512的整数倍。

1.首先将数据按每个512位为一组进行分组,每组里面分成16个32位,也就是16个int

2.对分组进行计算

每轮循环后,将A,B,C,D分别加上a,b,c,d,然后进入下一循环

MD5算法原理实现以及常用方法汇总

参考技术A 哈希算法又称散列算法,是将任何数据转换成固定长度的算法的统称。 从本质上讲,MD5也是一种哈希算法,其输出是生成128位的输出结果。 如果输入两个不同的明文,就会输出两个不同的输出值,并且根据输出值,不能得到原始的明文,这个过程是不可逆的。

MD5算法对512位报文的输入信息进行处理,每个报文被分成16个32位报文。 经过一系列处理后,算法的输出由4个32位的数据包组成,这些数据包能联生成一个128位的哈希值。

在MD5算法中,信息的填写方式是这样的:消息后面跟着一个1,然后是无数个0,直到512字节的剩余数等于448 (n*512) + 448。 为什么剩下的是448,因为剩下的512-448是64位,表示填充前的消息长度。 加上剩下的64位,(n+1)乘以512,也就是512的整数倍。

然后循环通过link变量获得结果。 MD5包含四个32位整数参数,称为链接变量:A=0x01234567, B= 0x89ABCdef, C= 0xFeDCba98, D=0x76543210。 一旦设置好四个链接变量,算法就开始了四轮循环。 具体的内部计算是关于数学的。如果你感兴趣,你可以自己理解。这里没有更多的解释。

以上是关于MD5的实现原理的主要内容,如果未能解决你的问题,请参考以下文章

MD5的实现原理

md5 32位 加密原理 Java实现md5加密

MD5散列算法原理及实现

谁可以告诉我md5加密原理

MD5( 信息摘要算法)的概念原理及python代码的实现

Qt实现一个重复文件检测小工具(原理:通过md5校验)