简述md5算法的具体过程

JSON 2023-07-20 15:49:31 254

MD5算法的具体过程如下

1、填充消息

我们需要将信息补充到512的倍数(也就是64字节)。填充一个1再填充0,使得消息的长度对512取余为448.

举例:比如原来的消息长度是64字节,那么填充的长度就是448-64.也就是384字节,使得长度为448字节。

2、 初始化MD缓冲区

MD5的嘻哈值是128位,我们按照32位一组,那么就可以分为4个组别,分别是A、B、C、D。经过演练就可以得到,初始值可以自定义。

假如将MD缓冲区初始化为以下的值:

A = 0x67452301

B = 0xefcdab89

C = 0x98badcfe

D = 0x10325476

3、处理消息块的结果

对于每一个消息块(512位的)。都会执行下面4步:

(1)将缓冲区的4个变量复制到临时变量的abcd中。

(2)对于每一个512的消息,都会使用64位的函数F来处理(下面会讲到),这个函数是用来对他们进行压缩用的。

(3)将F的结果abcd变量累计相加,得到新的ABCD

(4)将ABCD赋值给缓冲区的abcd四个变量。

经过一定的消息块处理,最后缓冲区的四个变量就是MD5算法得出的结果。

关于压缩函数F

MD5的核心就是一个循环运算算法,它由rounds 4轮一共64步组成,每一轮都由16个步骤。它们分别用到不同的非线性函数和加法常数,其中在每一步都必须下面4个步骤:

(1)将消息块分组按照允许民命为F0、F1....F15.

(2)复制缓冲区的4个变量到abcd当中。

(3)根据当前的轮数选择不同的非线性函数F\G\I计算出T值

(4)将T和abcd当中的其中任意一个相加。你就会得到新的变量ABCD。并且更新到缓冲区。

具体实现如下:

i在0到15之间时:

T = (B & C) | ((~B) & D)

F = B ^ C ^ D

i在16到31之间时:

T = (D & B) | ((~D) & C)

F = (5 * i + 1) mod 16

i在32到47之间时:

T = B ^ C ^ D

F = (3 * i + 5) mod 16

i在48到63之间时:

T = C ^ (B | (~D))

F = (7 * i) mod 16

说明:符号“&”表示按照位逻辑和运算。“|”代表按位逻辑或运算,“~”代表按位取反运算,MOD代表取余运算.

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/401.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
MD5如何解密?
md5密文与明文之间的相互转换
浅谈md5加密中的加盐是什么意思
自媒时代的贤内助——AI 视频云
关于一位“caoz的梦呓”的大佬在微信公众号喷我的整回复
记一次小失误导致的大事件,Mysql SQL Error: 0, SQLState: null 排查过程
SOJSON 阿里云活动达到67人,最终获得5年的1核2GB的ECS服务器使用权益
老炮儿下载,天使恶棍下载,终结者5,坏蛋必须死
Redis缓存淘汰算法,LRU算法,LRU算法讲解。
BlockingQueue 方法详细描
最新文章
PHP回显语句 36
Linux—文件树 83
C语言while循环和do while循环 127
Python元组剖析 151
MySQL触发器教程 262
sql使用布尔运算符和关系运算符 235
C语言的变量和常量 291
PHP变量剖析 193
SQL全外连接剖析 339
SQL自然连接剖析 223
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 681687
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674703
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 601610
免费天气API,天气JSON API,不限次数获取十五天的天气预报 575081
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 552740
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509309
Elasticsearch教程(四) elasticsearch head 插件安装和使用 479847
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 264119
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244246
Elasticsearch教程(一),全程直播(小白级别) 225502
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...