欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MD5暴力碰撞&&对王玉斌讲解PPT的总结

程序员文章站 2022-06-06 23:29:39
...

        王玉斌者,蓝杰1020组成员也。征战ACM亚洲赛,获金奖,享誉中南信息院。余听其讲PPT两次,由浅入深,通俗易懂,颇有感触,遂总结一下,发到博客中来,与诸君共勉。

        最近的一次PPT讲解是对MD5暴力碰撞的分析,因为需要处理大量的数据,蓝杰组建Hadoop集群对简单的密码进行蛮力破解试验。他的讲解是基于这样的一个背景下而来的。

       
MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
 
       首先玉斌对我们经常遇到的一个现象,在QQ中传送文件时这一现象进行了互动,为什么我们在传一个大的文件,瞬间就传上去了。讨论的大概结果是在腾讯的服务器中存了这么一个文件,在传输的过程中服务器会进行检测,服务器中是否有这么一个文件存在,而且在互动中,我中枪了。当玉斌问到是否与文件名有关时,就回答了一个有关,于是他改了个文件名,然后也是很快就传过去了(这里附一个:传输的文件是JDK,这东东腾讯服务器中肯定存在了)。于是问题抛出,腾讯是如何做的呢?

 
MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
 
        而后,使用了现实中的两个Boy争抢一个Girl的例子,对网络传输中的安全性问题又抛出了疑问?那这两个问题我们可以采用什么样的方式解决呢?于是有了数字摘要这一概念的出炉,这张PPT中将数字摘要类比为一个函数的功能。MD5就是这样一套算法,你给我一个文件,我给你映射成为一个128位的东东,这样你就可以直接使用这个东西来进行校验,刚刚抛出的两个问题也可以使用这样的方法解决(不过腾讯是不是这样做的我们不知道~~)

 
MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 

 

       随后怎么去构建这个MD5映射,于是玉斌敲了几行代码进去,简单的测试了一下,下面的代码是后来我写的,跟他当时写的出入不大,代码如下:
 

package MD5Test;

import java.security.NoSuchAlgorithmException;

/**
 * Message Digest Algorithm MD5(消息摘要算法第五版) 测试类
 * @author 赵广超
 */
public class MD5Test {

	public static void main(String[] args) {
		java.security.MessageDigest md5;
		try {
			md5 = java.security.MessageDigest.getInstance("MD5");
		
		String msg = "123456";
		byte digest[] = md5.digest(msg.getBytes());
		
		//这里要将byte转化为16进制数
		for(int t : digest) {
			String hex = Integer.toHexString(t&0xff);
			if(hex.length() ==1 ){
				System.out.print("0"+hex);
			}else{
				System.out.print(hex);
			}
		}
		
		System.out.println();//换个行
		
		//再来一种将byte转化为16进制显示的方法
		for(int t:digest){
			//或者用下面的方法
			//这里t是整型,用0xff与后变成只剩后两位的byte了
			System.out.print(String.format("%02x", t & 0xff));
		}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
	}

}

 

 控制台输出的结果是(代码中写了两种输出的方式,所以下面有两行):

       e10adc3949ba59abbe56e057f20f883e
       e10adc3949ba59abbe56e057f20f883e

 网络上的MD5加密/解密网站给出的结果:
 MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 

 

       然后大家可能会有疑惑,网络上那么多的数据,怎能保证每一个不同的文件都有不同的MD5值呢?然后玉斌用了淘宝图片的例子,结合数学中比较大小时常用的放大缩小的方法进行了解释,PPT如下:


MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
 MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
 

       如此下来,说明了MD5值不是不会遇到重复的情况,只是这个概率小的很多很多,远远小于我们买彩票中奖的概率,这样我们用它起来也就没有那么多的担心了。然后玉斌又提出了一个不可逆和不可解的问题出来,因为这直接关系到我们要解决的暴力破解的问题。

 

MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 

       

       如PPT中所述,枚举部分MD5值对应的密码,我们所需要处理的数据需要50个G并且需要超强的计算能力,所以为“蓝云”小组的成立和Hadoop集群的搭建做好了铺垫。

 
MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解    MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
 

        经过他这么一讲,我很快就明白了MD5是个啥东东,云计算平台可以做些什么东东,听完其讲解,三万六千个毛孔,通体透着明白后的“爽”。这次讲解之中,我们可以很容易的看出他准备的很充分,讲的很投入,也讲的很透彻。现在就做一个小小的总结,希望自己也能达到他讲PPT时的那种境界。

 

        如果要我来分析make PPT时的设计思路,首先得明白讲的是什么?为什么要讲这个(基于什么的大环境)?怎样组织思路去讲?那么我得看到要讲的这个东西解决了现实中的什么问题,人是活在现实中的,往往与自身密切相关的东西会更加引起注意,以身边发生的案例来进行说明可以有效的吸引听众,比如现实中我们使用QQ聊天过程中经常需要传数据,逛淘宝时看过的无数图片和现阶段听众(学生)最关注的男女朋友话题。从现实中提升起来,那么这个MD5的本质是什么?消息摘要。是如何实现的?这就要讲求知识屏蔽了,如果要把MD5算法是怎么实现的讲出来,那估计需要花大力气去研究,而且还不一定能够讲清楚。而这里我们也不需要做这一步,在这里我们只需要知道怎么用就好了(就好像我用PS修改图片,并不需要知道PS软件是如何实现的),于是java中如何实现的代码到了PPT上。在深入思考后发现这个东西有个问题,即不同文件的MD5值是否是不同的呢?于是带着验证的思路,搜了一些资料,利用淘宝图片的例子和中彩票很难的例子,说明发生的几率很小,过多的担心是没有必要的。最后结合大环境,我们要进行对MD5简单密码的暴力破解,需要大量的计算能力,于是需要将机器互联。

 

以下是我对讲解PPT的思考与总结:

1. PPT的设计思路要条理,连贯性要强。

           在什么样的情况下会提出所讲内容的问题;

           所讲内容的实质是什么;

           怎样去解决问题;

           这样的解决方案是否会有不合理性,如何验证;

           还可以解决其他的什么问题。

2. 对某一难以理解的问题,不妨用现实中的例子来进行阐释。

3. 需要注意知识屏蔽。

4. PPT的画面感要好,深蓝渐变色(乔布斯使用过的),黑体、微软雅黑很不错,最好一张PPT的色调不超三种(简约美)。

5. 讲解前的准备工作很重要。

6. 讲解的语气、神态等等很重要。

 

       就分析到这里吧,再有思考了写!想到了一个词“象征性结束”,技术这东西,对一个知识点的理解,完全透彻的搞明白不太容易。“结束”这个词用在技术学习上不太适用。

       感谢王玉斌同学的讲解和允许我在博客中直接引用他的名字。

——2013年1月26日凌晨记于刘洋寝室

  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 18.7 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 104.6 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 101.5 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 33.4 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 38 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 34.7 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 86.8 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 75 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 92.1 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 69.4 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 79.9 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 23.2 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 52 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 25.7 KB
  • MD5暴力碰撞&&对王玉斌讲解PPT的总结
            
    
    博客分类: 思考与总结 MD5PPT讲解 
  • 大小: 64.7 KB
相关标签: MD5 PPT讲解