MD5的全称是“message-digest algorithm 5”(信息-摘要算法),它是90年代初由MIT计算机科学实验室和RSA Data Security Inc联合开发,并经过MD2、MD3和MD4逐渐演变而来的。其主要作用是让大容量信息在用数字签名软件签署私人“密匙”前被“压缩”成一种保密的格式(就是把一个任意长度的字符串转变成一定长的大整数)。打个比方:例如地球上任何人都有自己独一无二的指纹,这就成为公安机关鉴别个人身份时最值得信赖的依据,同理,MD5算法可以为任何文件(不管其大小和格式如何)产生一个独一无二的“数字指纹”,如果有人对文件做了修改,即使改动十分微小,其MD5值(也就是对应的“数字指纹”)都会发生变化。
MD5算法采用128位加密方式,即使一台计算机每秒可以尝试10亿条明文,要破译出原始明文也需要1022年。MD5的应用非常广泛,在802.1x认证中,EAP-MD5认证采用MD5算法,用户密码不以明文方式在网上传输,从而保证了认证信息的安全。同时,它还被应用于加密和解密技术上,譬如在Unix系统中用户的密码就是使用MD5算法(或其他类似的算法)加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户明文密码的情况下就可以确定用户登录的合法性。这样不但可以避免普通用户的密码被系统管理员知道,而且还在一定程度上增加了密码被破解的难度。另外,大家比较熟悉的即时通信软件MyIM也使用MD5算法。利用MD5算法来进行文件校验的方案,被大量应用在软件下载站点、论坛数据库和系统文件安全等方面。