MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD二、MD3和MD4发展而来。MD5算法的使用不须要支付任何版权费用。html
MD5功能:算法
MD5加密算法因为其具备较好的安全性,加之商业也能够无偿使用该算法,所以该加密算法被普遍使用,md5算法主要运用在数字签名、文件完整性验证以及口令加密等方面。数据库
用途: 一、防止被篡改:安全
1)好比发送一个电子文档,发送前,我先获得MD5的输出结果a。而后在对方收到电子文档后,对方也获得一个MD5的输出结果b。若是a与b同样就表明中途未被篡改。2)好比我提供文件下载,为了防止不法分子在安装程序中添加木马,我能够在网站上公布由安装文件获得的MD5输出结果。3)SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5.微信
二、防止直接看到明文:网站
如今不少网站在数据库存储用户的密码的时候都是存储用户密码的MD5值。这样就算不法分子获得数据库的用户密码的MD5值,也没法知道用户的密码(其实这样是不安全的,后面我会提到)。(好比在UNIX系统中用户的密码就是以MD5(或其它相似的算法)经加密后存储在文件系统中。当用户登陆的时候,系统把用户输入的密码计算成MD5值,而后再去和保存在文件系统中的MD5值进行比较,进而肯定输入的密码是否正确。经过这样的步骤,系统在并不知道用户密码的明码的状况下就能够肯定用户登陆系统的合法性。这不但能够避免用户的密码被具备系统管理员权限的用户知道,并且还在必定程度上增长了密码被破解的难度。)加密
三、防止抵赖(数字签名):.net
这须要一个第三方认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产生摘要信息并作好记录。若之后A说这文件不是他写的,权威机构只需对此文件从新产生摘要信息,而后跟记录在册的摘要信息进行比对,相同的话,就证实是A写的了。这就是所谓的“数字签名”。orm
从安全的角度讲,MD5的输出为128位,若采用纯强力攻击寻找一个消息具备给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。若采用生日攻击法,寻找有相同Hash值的两个消息须要试验264个消息,用每秒可试验1000000000个消息的计算机需时585年。cdn