简述md5算法的具体过程

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

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和base64的区别
MD5加密原理:保护数据安全的利器
md5密文与明文之间的相互转换
MD5加密原理:保护数据安全的利器
md5和base64的区别
MD5是什么?作用是什么?
浅谈md5加密中的加盐是什么意思
垃圾分类怎么分类具体内容
垃圾分类怎么分类具体内容
最新文章
Linux I/O重定向 1767
Ruby 循环 - while、for、until、break、redo 和 retry 711
Node.js:全局对象 517
如何使用终端检查Linux上的内存使用情况 635
JavaScript对象详细剖析 300
Python print() 函数 409
PHP if/else/elseif 语句 407
HTML5 Canvas弧线教程 387
Java赋值运算符 431
XML内部实体和外部实体 464
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 686836
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675081
免费天气API,天气JSON API,不限次数获取十五天的天气预报 615785
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 611117
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 555623
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510028
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481399
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 269208
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244787
Elasticsearch教程(一),全程直播(小白级别) 227489
支付扫码

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

查看我的收藏

正在加载... ...