[转]MD5算法是否安全
散列算法(Hash Function)中,最为常用的是MD5(Message-Digest Algorithm 5)算法,MD5是一个较为古老的算法,一度被广泛应用于安全领域。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件 系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。
通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
不过,由于MD5的弱点被不断发现以及计算机能力不断的提升,通过碰撞的方法有可能构造两个具有相同MD5的信息,使MD5算法在目前的安全环境下有一 点落伍。从实践角度,不同信息具有相同MD5的可能性还是非常低的,通常认为是不可能的,通过碰撞的方法也很难碰撞出复杂信息的MD5数值。
因此,MD5算法还是被广泛的用作检验文件是否变化的散列函数,很多类似迅雷、旋风这样的下载工具,都可以通过MD5来验证,用户下载下来的文件是否被修改。

在用户密码的处理方面,MD5总的来看还算是安全的,至少比明文保存密码要好的多,目前破解MD5主要依靠大型字典的方法,将常用密码进行MD5后建立 数据库,然后和MD5数值进行对比,通过这样的方法来“破解”MD5,因此,通常直接将密码进行MD5处理的话,一些弱密码很容易可以通过这种手段“破 解”出来。
不过,如果在散列的过程中,加入足够长的salt(即干扰字符串),并且salt加入一些动态信息,例如username、 随机码等,这样生成的MD5还是很难被破解的,因为仅仅从数据库无法看到MD5具体的处理过程,必须同时看到处理时的源代码才可以,这就给破解MD5带来 相当大的难度。
还有一个方法,既然简单密码的MD5是不安全的,网站的开发者只需要一个简单的技巧就能提高密码的安全度:在用户注册的时候,录入新密码后进行判断,强制密码必须8位以上,并包含字母和数字,否则不让注册,这样用户注册后使用的密码就都是不容易被破解的密码了。
如果需要更安全的算法,建议不用MD5,而使用SHA-256, SHA(Secure Hash Algorithm,安全散列算法)是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。目前还没有出现针 对SHA-256算法的有效碰撞攻击方法,该算法也是开源算法,在很多地方可以找到,是MD5的一个不错的后继者。
来源:http://www.williamlong.info/archives/2944.html
- ·如何用西联汇款托收..
- ·室内/车内 空气污染..
- ·在线网银支付接口有..
- ·强大的中国HX防火墙
- · 光标(.cur/.ani文..
- ·支付宝接口申请图解
- ·屏蔽联通/网通域名纠..
- ·Furniture English(..
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(624)
- 操作系统及应用软件(391)
- JavaScript/Ajax(331)
- SQL及数据库(140)
- 黑客技术(116)
- Asp/VBScript(114)
- HTML/WML/CSS兼容/XML(106)
- 网站排名及优化(97)
- PHP/apache/Perl(96)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- C#设计模式(28)
- 计算机网络(26)
- 机械重工(26)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
- ·快速通过google PIN..
- ·农行/邮政西联汇款表..
- ·网站建站时间查询
- ·优秀程序员是如何来..
- ·如何用西联汇款托收..
- ·室内/车内 空气污染..
- ·室内/车内 空气污染..
- ·装修后甲醛治理问答

