您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

MD5破解原理

时间:2019-10-12 10:01:59  来源:  作者:

本文目的

在我的上一篇文章《MD5算法,看这篇就够了》中,我描述了md5算法的基本步骤,今天跟大家分享一下破解md5的原理。参考文献在文末,有兴趣的读者可以读读。

符号

文本中出现诸如M0,M1,以粗体字母+非粗体数字组合的符号等同于公式中该字母和以该数字作为下标的符号。

MD5算法回顾

首先我们来大概回顾一下MD5算法。

  1. 填充。将消息E的长度进行填充,使其满足对512取余为448。
  2. 补充数据长度。将原消息以64位表示,并添加到填充的数据之后,我们得到M。
  3. 初始化缓存器。A:01 23 45 67;B:89 ab dc ed;C:fe dc ba 98;D:76 54 32 10。A,B,C,D都是32位的缓存器,在下一步运算中使用。
  4. 进行迭代处理。M的长度是512的整数倍(448+64),我们将数据M以512长度为单位进行划分,此时M=(M0,M1,M2....M(N-1)),在运算中我们将这512位用16个32位的数来表示。接下来,我们对M进行遍历,对其中的每一项进行四轮运算,每一轮都要进行16则计算,计算的结果缓存到A,B,C,D缓存器中,并对下一次迭代产生影响。
  5. 输出。我们从A的低位字节开会,到D的高位字节结束,每一个都是32位,最终拼接的结果就是4*32 = 128位,这就是MD5计算的结果。

上述迭代的过程我们称之为杂凑运算。可以描述成这样:

MD5破解原理

 

公式中的Mi表示为M中下标为i的元素,H0是缓存器中的初始值(A,B,C,D),Hi表示第i-1轮中缓存器中的结果,四轮运算我们抽象成函数f

差分攻击简介

哈希函数最重要的分析方法是差分攻击,同时也是分析分组密码最重要的方法之一。差分攻击大部分是使用异或运算的异或差分攻击,由Eli Biham和Adi Shamir在分析类似DES加密体系的安全性中提出的,他们描述差分密码分析是一种分析纯文本对(原文)中的特殊差异对产生的密码文本对的差异的影响的方法。

在本文中,我们使用整数模减((A-B) mod C)来进行差分分析。

差分攻击原理

两个数之间的差我们表示为:

MD5破解原理

 

对于M=(M0,M1,M2,....,M(N-1))和M'=(M0',M1',M2',....,M(N-1)')。哈希函数的整个过程的差我们可以表示为:

MD5破解原理

 

在上式中,△H0表示初始值(A,B,C,D)之间的差,显然是0。△H表示最终两个消息之间的差,△Hi表示在第i次迭代之后结果的差,当然也是下次迭代的初始差值。我们的目标很简单,假如我们使得最终的结果△H=0的话,也就是M和M'的哈希结果是一样的,M和M'就产生了碰撞。

差分优化

要想使得碰撞发生,即△H为0,需要满足的充分条件多达290多条(N=2),分布在每一轮运算的计算上,附录中给出了表格。要想满足这些条件,提高碰撞的可能性,我们使用消息修改技术。有两种修改方式。

1、对于任意的消息块(Mi,Mi')第一轮运算的非0“差”。

MD5破解原理

 

其中△R,第二个下标表示轮数。我们通过修改Mi的值,保证在第一轮运算中满足差分的条件。

2、使用多消息修改机制,我们不仅能保证第一轮运算满足充分条件,同时也能都大幅提高第二轮运算条件满足的几率。

MD5差分攻击

对于MD5的差分攻击,同其他哈希函数大同小异。这里我们攻击的目标是1024位M=(M0,M1)的消息体。我们的目的就是根据差分值计算M'=(M0',M1'),使得MD5(M)=MD5(M')。

步骤描述如下:

  1. 随机产生M0
  2. 使用消息修改算法修改M0,使之尽量满足充分条件;
  3. 如果所有的充分条件都满足,则计算MD5的输出并将其作为后半部分的链接变量,如果不满足,则回到第2步,重新随机选择;
  4. 随机产生M1
  5. 使用和前半部分相同的方法计算后半部分的输出。需要注意的是,后半部分计算使用的链接变量初始值为前半部分的输出

总结

该攻击方法只用于寻找产生碰撞的消息对,对于实际应用来说,满足差分的充分条件的几率很小。

参考文献

  1. Xiaoyun Wang,Hongbo Yu,How to Break MD5 and Other Hash Functions
  2. E. Biham, A. Shamir. Differential Cryptanalysis of the Data Encryption Standard
  3. The MD5 Message-Digest Algorithm

附录

MD5破解原理

摘自王小云论文


MD5破解原理

摘自王小云论文

关注技术大白,带你阅读技术书籍,了解技术内幕!



Tags:MD5   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Md5优点:快速计算m,具有单向性 one-way,不可由散列值推出原消息,但是如果密码过于简单就会有一定概率被暴力破解。密码存储常用方式:1、双重MD52、MD5+加盐3、双重MD5+加盐我一般...【详细内容】
2021-12-07  Tags: MD5  点击:(24)  评论:(0)  加入收藏
一、摘要算法摘要算法又称哈希算法。它表示输入任意长度的数据,输出固定长度的数据,它的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密。目前可以被解密逆向的只...【详细内容】
2021-03-16  Tags: MD5  点击:(276)  评论:(0)  加入收藏
一、RIP路由认证介绍前节回顾:前一节,我给大家介绍了RIP路由汇总,RIPV1手动验证,RIP手动路由汇总等本节引入:本节给大家讲解RIP路由认证,验证的两种方法包括:明文和加密认证。RIPv2...【详细内容】
2020-04-07  Tags: MD5  点击:(113)  评论:(0)  加入收藏
消息摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。消息摘要...【详细内容】
2020-02-25  Tags: MD5  点击:(48)  评论:(0)  加入收藏
基础1byte = 8bit (1字节等于8比特) Mysql数据库整数类型介绍 前言前两天写了一篇文章,是介绍如何将32-byte的MD5转为整型来保存,最后使用了两个ubiging和一个uint来保存,共使...【详细内容】
2020-01-03  Tags: MD5  点击:(160)  评论:(0)  加入收藏
MD5(Message-Digest Algorithm),想必大家都再熟悉不过了吧。通常我们调用第三方支付接口的时候都会遇到这种算法或者SHA等等类似的算法来做签名验证,由于其是不可逆的算法,对应破...【详细内容】
2019-11-29  Tags: MD5  点击:(115)  评论:(0)  加入收藏
这段时间刚好正在做软件安全的实验和课设,学习了各种加密算法,比如对称加密算法的DES,AES;非对称加密算法的RSA;再如今天要讲的主角-单向加密算法的MD5。为什么这么多算法,MD5成...【详细内容】
2019-11-14  Tags: MD5  点击:(72)  评论:(0)  加入收藏
本文目的在我的上一篇文章《MD5算法,看这篇就够了》中,我描述了md5算法的基本步骤,今天跟大家分享一下破解md5的原理。参考文献在文末,有兴趣的读者可以读读。符号文本中出现诸...【详细内容】
2019-10-12  Tags: MD5  点击:(500)  评论:(0)  加入收藏
MD5是一种加密算法,这种算法的用途我在另外一篇文章里写过,简单来说MD5就是把输入的字符或者文件,不论长短或者大小都转化为唯一的32位字符串,这套字符串可以用作“身份证明”或...【详细内容】
2019-09-26  Tags: MD5  点击:(182)  评论:(0)  加入收藏
MD5是一种不可逆的加密算法,全称是Message-Digest Algorithm 5(信息-摘要算法)。是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一。MD5的典型应用是对一段...【详细内容】
2019-09-09  Tags: MD5  点击:(195)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条