MD5的全称是Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法,在1991年由MIT Laboratory for Computer Science(IT计算机科学实验室)和RSA Data Security Inc(RSA数据安全公司)的Ronald L. Rivest教授开发出来。

对于原始密码,MD5加密时并没有对长度进行要求,这导致可输入字符为,大写字母+小写字母+数字+符号(26+26+10+33=95,符号为键盘上所能看到的,并未加入其它特殊字符,如/X12等)。而输出的密码为32位,大写字母+数字(26+10=36)。有此可以看出输出密码最多为36的32次方种。而输入密码却有无数种可能。即当输入位数超过㏒95(32^36)时就会产生加密后的文字重复。即可导致碰撞。(这里并没有加入不可输入字符,即ASCII中存在的,但不能从键盘直接输入的。)有此可以看出。MD5产生碰撞时必然的,并非偶然。

在2004年8月17日的美国加州圣巴巴拉召开的国际密码学会议(Crypto’2004)上来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。MD5和SHA-1属于散列算法,从设计原理来讲,就有产生碰撞的可能,王小云教授的方法缩短了找到碰撞的时间,是一项重要的成果。

所谓的碰撞其实原理很简单,就是找到一组新密码(可能和原本密码相同),对其进行MD5加密运算。使得加密后的密码和原本密码相同,则可以通过比较运算。就好比MD5为算术运算。对3+3进行运算可得到加密后的密码为6。当我们通过某种办法找到加密后的密码6的时候,就可以通过一些列算法得到一组新的密码为2+6,这样我们把2+6拿去加密运算依然可以得到加密后的密码6。这样就可以混淆程序,通过验证。

但如果给原始密码加入一些特定的信息,然后进行加密就会得到其他效果,哪怕拿到加密后的密码时也无法进行碰撞。如同上面算法 当我输入3+3 后  系统自动帮我在其后加入一个数字如 10 ,则可以得到原文为3+3+10,对其进行运算可得到加密后的密码为16。当我们通过某种办法得到该加密后的密码16时进行碰撞,可能会得到新密码 8+8 。但是当输入8+8时,系统也会再其后加入一个数字如 10,则输入为8+8+10,这样再通过加密,会得到加密后的密码26,这样就无法和16进行比对了,这样可以使得MD5碰撞失去意义。

所以当在进行密码录入的时候,可以对密码进行增强型过滤,如在其开头结尾加入特定字符,就可以使得MD5碰撞失去意义。

MD5碰撞和我眼中的MD5相关推荐

  1. md5碰撞Java_java现在MD5加密不安全了吗?

    泻药, 首先,md5 和Java无关,md5是一种摘要算法(和加密有区别),Java是一种编程语言,你可以说可以用Java实现一个md5摘要函数. 其次,重申md5不是加密,而是摘要, 加密只有可以解 ...

  2. 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。

    生成两个文件 fastcoll_v1.0.0.5.exe -p C:\windows\notepad.exe -o D:\notepad1.exe D:\notepad2.exe 比较 md5 校验是 ...

  3. 首发不同文件的md5碰撞真正方法——有图(视频教程加工具)非暴力碰撞!

    首发不同文件的md5碰撞方法(视.频教程加工具)-非暴力碰撞! 网上的MD5碰撞工具都是碰一个文件变两个的!没有碰撞两个不同文件MD5的方法! 其实碰撞两个不同文件的MD5的方法很简单!王小云都说过只 ...

  4. md5碰撞Java_2 MD5加密 java实现

    百度百科对MD5的说明是: Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. MD5即Mess ...

  5. 逆向工程实验——pre9(可执行文件的加密MD5碰撞lab)

    目录标题 1.阅读 2.阅读 3.阅读 4.阅读下面这三篇文章: 5.MD5 Collision Attack Lab Task 1:使用相同的MD5哈希值生成两个不同的文件 问题1:如果前缀文件的长 ...

  6. 【网络攻防技术】实验三——MD5碰撞实验

    一.实验要求 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制 ...

  7. md5 collision(md5碰撞)

    题目来源:南京邮电大学网络攻防训练平台 Web题 md5 collision 解题过程: 点开题目标题,呈现在眼前的是一段php代码,代码如下: $md51 = md5('QNKCDZO'); $a ...

  8. CTF_Web:php弱类型绕过与md5碰撞

    0x00 前言 md5碰撞只是一种掌握php弱类型的方式,弱类型的内容有很多,数组.字符串比较等等,但不论以哪种方式考,涉及的知识点都是相通的,希望通过对基础知识的分享与大家一同学习进步. 0x01 ...

  9. 利用fastcoll实现MD5碰撞

    源码: <?php show_source(__FILE__); class CDUTSEC {public $var1;public $var2;function __construct($v ...

最新文章

  1. 常用的Meta标签写法和作用
  2. 网络对抗技术-实验报告一
  3. 「SNOI2019」
  4. TcpSocket编程与Event编写学习的好例子
  5. Web应用程序中的Spring JDBC入门
  6. OPPO 回应“不务正业”生产口罩;旧款 iPhone 降速被罚 2500 万欧元;Angular 9.0.0 发布| 极客头条...
  7. Windows下给WSL子系统(Kali)换源,使用binwalk,outguess等工具
  8. Aspose word pdf 相互转换
  9. Python3快速入门—5.函数
  10. 可靠、稳定、安全,龙蜥云原生容器镜像正式发布!
  11. 用MATLAB画国旗
  12. 网页木马是怎么制作的
  13. c语言容易挂科吗,盘点大学里“易挂科”的那些科目,一次不过,可能面临次次不过...
  14. python(28): 连接oracle环境离线安装及报错解决87,193
  15. 腾达f3虚拟服务器怎么设置,腾达(Tenda)F3无线路由器设置【图文】教程大全
  16. 如何用自媒体引流?学会这3招足矣,日引500+精准粉
  17. 纪中游记 - Day45
  18. 银联报文中和密码相关域
  19. 传统型编码器测速方案
  20. SXSSF导出:对比一下poi-3.17版本和poi-4.1.2(4.0以上)版本的改动

热门文章

  1. 汇编语言——8086微处理器
  2. 石头剪刀布,判断输赢(算法学习第21天~~~,C代码)
  3. 网络工程师应该考什么证
  4. 站立会议_站立-接受或离开
  5. swiper异形切换(可视化)
  6. 【科技百咖】东信达总经理刘万:十年,化蛹成蝶
  7. particles 粒子效果
  8. oracle公司的crm有哪些主要模块,CRM主要功能模块有哪些
  9. 飞机上可以带充电宝吗?充电宝放书包里面能不能带到飞机上?
  10. cas:1628790-40-8|脂溶性Cyanine7-COOH|CY7-Carboxylic Acid