MD5/SHA浅谈­

转载 2011年10月14日 12:32:11


­对两种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不但不会消亡,它在压缩方面的价值反而会变得不可估量~这真是有够科幻~­

MD5 和SHA-1的区别

数据完整性确认和数据来源的真伪鉴定都是很重要的安全服务。实现这些安全服务的最好方法就是使用加密函数中的单项散列(Hash)函数。单项散列(Hash)函数是一种单项密码体制,它是一个从明文到密文的不可逆...
  • down177
  • down177
  • 2015-01-28 17:42:07
  • 3175

MD5和SHA-1

MD5和SHA-1都是我们耳熟能详的术语了,很多人可能知道他们跟加密有关系,但是他们是怎么做到加密的,他们各自的特点又是什么。我来简单的讲一讲。...
  • shsalex
  • shsalex
  • 2016-08-24 14:58:05
  • 9795

MD5加密算法与SHA加密算法

2、MD5加密 2.1 概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号...
  • wangyang1354
  • wangyang1354
  • 2015-11-09 14:57:05
  • 7123

MD5和SHA-1的缺陷

上文介绍了MD5和SHA-1函数,我现在来讲一讲这两个函数作为消息摘要函数的安全上的缺陷是什么。...
  • shsalex
  • shsalex
  • 2016-08-26 15:42:46
  • 2771

java中MD5和SHA加密

今天因为业务需要,所以就去简单了解了一下java中MD5以及SHA加密算法的一些用法知识,特此整理,方便以后查看。 一.MD5简介   MD5(英文全称是Message Digest Algorith...
  • qq_31490071
  • qq_31490071
  • 2016-04-29 11:18:29
  • 1133

SHA-1 加密(与MD5的区别)

简介 1 安全散列算法SHA 是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-2...
  • qq_32714913
  • qq_32714913
  • 2015-12-19 14:12:49
  • 6385

Base64,DES,RSA,SHA1,MD5笔记

1,Base64 场景:你想把一组二进制数据表示为一组可见字符,这样在某些场合更加利于传输,比如在邮件中传输。 算法:http://zh.wikipedia.org/wiki/Base64 2,...
  • cubesky
  • cubesky
  • 2014-08-22 11:47:55
  • 1070

SHA 加密是什么( sha1 和 MD5 的区别 )

见:http://baike.baidu.com/link?url=oi8K5xwt6dSpFAZEKlTaBq-4v_FfWNVKPCfb2FvjydpRcWLeG9o5DmJ8e1SkdSIJ3H...
  • u011314442
  • u011314442
  • 2017-06-15 15:35:38
  • 11584

RSA、AES、DES、MD5、SHA1几种加密算法的比较

MD5和SHA1加密算法,用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改的.它可以帮你验证从网上下载下来的windows7安装程序是否与发布人发布的东西完全一致,也就是帮助你验证这个程序...
  • q1015171972
  • q1015171972
  • 2016-01-22 13:24:26
  • 9546

Comparing Hash Algorithms: Md5, Sha1 or Sha2?

There is a large number of cryptographic hash algorithms out there and it’s not always obvious which...
  • fishmai
  • fishmai
  • 2016-09-01 12:54:37
  • 632
收藏助手
不良信息举报
您举报文章:MD5/SHA浅谈­
举报原因:
原因补充:

(最多只允许输入30个字)