MD5算法就是将任意长度的字节串通过一定的算法变换成一个128bit的大整数, 并且这是一个不可逆的变换算法。 也就是说, 即便信息摘要被窃取, 即使有算法的源程序, 也不可能将一个MD5值变换回原文。
1、 MD5算法的典型应用环境和用途如下
1.a、 MD5算法的典型应用是放置信息被篡改, 通过对重要信息变换产生信息摘要(Message-Digest)来实现, 一般称之为指纹(fingerprint)技术。 在实际应用用, MD5将整个文件当作一个大文本信息, 通过其不可逆的字符串变换算法, 产生唯一128位MD5信息摘要。 如果收到的文件的信息摘要和原有的信息摘要不同, 则说明这个文件一定是不正确的。可以查看是否被黑客篡改过或者出现了网络故障。 如果再假如一个第三方认证机构, 用MD5算法还可以放置文件作者的"抵赖", 这就是所谓的数字签名应用。
1.b、 MD5算法还广泛应用于加密和解密技术领域。 在现在的电子商务平台中, 如果仅仅是吧用户注册的密码单纯地直接保存起来, 那么对于系统管理员来说就没有保密性可言, 更重要的是其为黑客破解减少了一道重要的屏障。 如果用户注册时保存用户注册密码的MD5信息摘要, 那么每次用户登陆时就只用将的呢个路密码的MD5信息摘要与数据库中保存的MD5信息摘要相比较,就可以判断密码的正确性, 同时也保证了密码的安全性。 即便是系统管理员也是不知道密码内容的。 目前有很多系统都是用MD5算法来保存用户信息的。 这样就连系统本身也不知道用户信息是什么, 只能判断用户信息的正确性。
2、 MD5算法的安全性
现在黑客使用最多的破译密码的方法是一种被称为“跑字典”的方法, 其本质是一种暴力破解方法(穷举法)。 对于MD5算法的破译红丝线方法就是用日常搜集的字符串表或者用排列组合的方法差生字符串序列, 先用MD5程序计算出这些字典项的MD5摘要, 然后用目标MD5摘要在这个字典中检索。 但是这种破译费那个发是很难红丝线的, 假设密码长度不超过16个字节, 同时密码只能是大小写字母和数字, 共62个字符, 排列组合出的字典的项数是P(62,1)+P(62,2)... 数量是极其庞大的, 显示是很难实现的, 而且还必须获得目标MD5信息摘要才能进行。 因此, MD5算法的安全性是相当高的, 破译难度非常大, 甚至是不可能的。 因此安全性级别很高的UNIX操作系统也采用MD5算法对用户信息进行加密保护。
3 、 MD5算法过程概述
MD5以512位分组来处理输入的信息, 每一组被划分为16个32位子分组, 经过了一系列的处理后, 算法的输出由4个32位分组组成, 将这4个32位分组级联后将生成一个128位散列值, 就得到了MD5信息摘要。
可以通过访问网站 http://www.ietf.org/rfc/rfc1231.tx 来取得MD5算法描述的文本, 也就是RFC1321的文本。
^_^ ^_^ MD5算法是不收取任何版权费用的, 对于大多数应用采用MD5算法已经足够... ...
——————————————————————————————————————
下一讲: MD5加密算法的JAVA实现