一、什么是MD5加密
1990年10月,著名密码学家R.L.Rivest在MIT(Massachusetts Institute of-Technology)提出了一种Hash函数,作为RFC 1320(RFC:互联网研究和开发机构工作记录)公开发表,称为MD4,MD5是MD4的改进版本,于1992年4月作为 RFC 1321公开发表。
MD5加密是一种常见的加密方式,经常用在保存用户密码和关键信息上。全称是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。 例如我们要加密一篇文章,那么我们会随机从每段话或者每行中获取一个字,把这些字统计出来后,再通过一定的运算获得一个固定长度的MD5加密后信息。因此,其很难被逆向破解。
二、为什么使用MD5加密
1、比如用户注册某个网站,在前端输入用户名和密码后,会将该信息保存到数据库中。如果不使用MD5加密,那么该网站的管理员就可以从数据库中看到该用户的用户名和明文密码,如果该管理员一旦“变心”了,就会很危险。而使用MD5加密后,保存到数据库中的密码是由MD5对密码的字符串加密后生成的一串字符串,管理员不能知道用户的明文密码,提高了用户信息的安全性。
2、MD5在避免文件内容被篡改方面有重大作用。MD5可以对字符串进行不可逆的加密,这使得可以生成一个128bit的大数,由于MD5算法的原因,它与源文件相对应,即使在文件中做了很小的修改,那么生成的字符串也是差别巨大。
3、在破解ND5方面,最常用的方法是“跑字典”。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字节,排列组合出的字典的项数则是P(62,)+P(62,2)+…+P(62,8),那也已经是一个天文数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。
所以总体而言,MD5加密是十分安全的,即使有一些瑕疵,但并不影响具体的使用,而且MD5是免费的,所以它的应用还是十分广泛的。