转载至:http://blog.csdn.net/coslay/article/details/25544663
MD5概念:
MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,来校验这个文件是否被“篡改”过。
MD5文件传输:
当我们下载了一个软件以后,如果想知道下载的这个软件和网站的原始文件是否一模一样,就可以给自己下载的文件做个MD5校验。如果得到的MD5值和网站公布的相同,可确认所下载的文件是完整的。如有不同,说明你下载的文件是不完整的:要么就是在网络下载的过程中出现错误,要么就是此文件已被别人修改。为防止他人更改该文件时放入病毒,最好不要使用。(一般使用MD5计算工具(可以从网上下)载检验后和软件网站公布得MD5码进行比对)
MD5密码加密:
MD5也可以应用在对密码得加密,那么加密后有什么作用呢?和加密前有什么区别呢?
1.因为是不可逆的,所以在数据库里面看到的密码是无用的,你不是检验用户的密码,而是检验用户输入的密码经md5加密以后和数据库内的是否相符
2.你不希望你的邮件服务器的管理员知道你的信用卡密码吧?
密码之所以用MD5加密,就是为了不可解密。
正常有良心的设计,不能让用户的密码可以解开,因为人的懒惰是天生的,所以大部份的人只会用两三个常用密码。
所以外国的密码设计是这样的,你输入一个密码(明文),用MD5加密后保存在数据库中。
下次要验证密码也好办,把用户的输入用MD5加密后,与数据库中加密过的数据对比,相同的话,就表示密码正确。
这样的设计还有另外一个好处,就是可以一定程度上防止SQL注入。(这个话题不知道可以自己GOOGLE)
网上的暴力破解其实也是利用这个原理,
他把许多已知明文的,用MD5加密后,保存起来。你要反查,他实际上是在数据库中查找加密过的,是否有与你
查询的MD5串相同,如果相同的话,就把明文给你看。
这样的设计表达的是一个互相尊重的理念,系统管理员/开发员是无权知道用户的密码的。
如果用户忘记密码,管理员只能用重置密码的方式。