MD5/SHA浅谈­


­对两种HASH算法的误解­

  我觉得现在很多人都没搞清楚……经常看到一些人拿着一些MD5值,重金“招贤”“解密”~不见得这些MD5值都是从一些简短字符串作HASH出来的。你懂我的意思吗,可能这就是他在某下载网站上看到的某文件的MD5,他是想要从这个值,变出这个数字签所对应的那个完整的文件~­

  把MD5/SHA当做一种加密算法,也许就会导致这样一种状况,因为很多不甚了解的人他往往很容易将这两种不可逆的单向算法 同 一般概念上的“加密”混淆在一起。自然,一般意义上说加密就意味着可以用key解密(如3DES、AES与RSA等算法),而MD5/SHA中根本没有key的概念。另外,这两种算法都把 任意 长度的数据映射到一个定长的(MD5是128bit,SHA是160bit)数值上,这一特性决定了它在数学上难以逾越一个难题——即使你在知道HASH值和HASH算法描述的情况下 仍无法反推得到原数据。所以,如果一定要说着东西是加密算法,那一定要记得,它是不可逆的加密算法。最好,就把它看做一种 数字指纹、签名 这种概念的东西,你就不至于会误解得像上面那样离谱了。­

  MD5的全称是Message-digest Algorithm 5(信息-摘要算法);SHA叫安全散列算法;它们都是基于HASH的,其主要的功能是确保信息传输完整和一致性。它们主要有两个特点,一个就是刚才说的,单向性,即你在知道HASH值和HASH算法描述的情况下,仍无法找到一种手段反推得到原文;二个姑且叫它 蝴蝶效应 吧,就比方说你有两个1G大小的文件,就算他们的数据只有1bit位不同­,那么他们算出来的MD5值你也看不出有任何关联。至于SHA和MD5在程序实现方面的区别,不是我辈所研究的。­


两种HASH算法的应用­

我所知道的主要有两种:­

  一是在各种身份认证上,用于隐藏密码明文。具体来说就是当你第一次输入密码,软件会对你输入的密码做一个HASH然后保存这个值,而你输入的明文“密码”,出于安全考虑,有时可能就不会保存;当你再次输入密码时,它会拿你这个密码的HASH值和你第一次输入的作对比,一样就认证成功。­

  二是用于确保数据传输的完整性和存贮的唯一性。很多软件下载网站会公布一些可供下载的文件的HASH值,这是有道理的,用户在下载文件后,可以对其下载的文件做一个HASH然后和网站上的此文件的HASH值做比照,如果发现不一致,用户就应该采取特殊处理,这样可以避免一些安全隐患。另外,你在上传文件到某些服务器是,它会扫描你文件的HASH值,以确定其服务器上是有相同的文件。QQ邮箱文件中转站应该就是这样做了的。­

­
所谓的MD5破解­

­就我所了解到得大多数人所谓的“破解”,大概有两种含义:­

  其一,HASH碰撞,即找到两个或更多不同的数据,而它们的HASH值一样(用穷举法等)。这在理论上讲是可能的,因为HASH只是一个定长的数值(MD5长128bit,SHA长160bit),其数量级限于2^128或2^160;而源数据的数量是无限的。HASH碰撞已在很多人的努力下成了现实,这也意味着,这种用HASH的数字签名是可以伪造的。
­
  其二,暴力破解、字典破解等。这基本上和破解HASH没有什么关系。前面说过很多密码是HASH过的密文,所谓的暴力破解、字典攻击,就是说一些破解软件可以根据用户设定的规则,连续的产生一些字符组合,去试探密码,如果某一字符组合刚好是密码,那HASH过后自然就匹配中了。这很明显不是通过破解HASH找到了原文,它就是“猜中”了原文而已。  http://www.md5.com.cn/ 这类网站据说可以破解MD5,即反推其原数据。它宣称“MD5 Crack本站在线查询常用MD5数据大于45,213,721,157(452亿),后台分布式计算机集群可查询百万亿数据”有兴趣的可以上去试下,比如你输入111111  admin  123456 111 这些超级简单的字符串的MD5值时(你首先要去找个可以算字符串MD5的东西),它可以反查出原字符串。这个谁知道它里面是怎么实现的,是不是摆了本常用字符组合的MD5现成字典在那儿等你去查~是不是你输入MD5后 它再去字典攻击??­

  我看不会像有些人宣称的那么科幻,MD5就要被完全消亡啥的http://zhidao.baidu.com/question/11982811.html,如果真如是其说言,这MD5不但不会消亡,它在压缩方面的价值反而会变得不可估量~这真是有够科幻~­

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值