China
IBM 主页
产品
咨询
行业
新闻
关于 IBM
dW 中国站点 : Java 概览 : 文档库 - 论文
MD5 的 Java Bean 实现
许方
编者的话:
虽然
MD5
签名算法在
jdk
中早已实现(如
MessageDigest
类),但作者从
MD5
的原理分析讲述
MD5
具体算法的
Java
实现
并给出一个完整的示例程序,我想这对我们的读者来说还是会有很多帮助的。
MD5 简介
MD5 的全称是 Message-Digest Algorithm 5,在 90 年代初由 MIT 的计算机科学实验室和 RSA Data
Security Inc 发明,经 MD2、MD3 和 MD4 发展而来。
Message-Digest 泛指字节串(Message)的 Hash 变换,就是把一个任意长度的字节串变换成一定长的大整
数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或
编码方式无关。
MD5 将任意长度的“字节串”变换成一个 128bit 的大整数,并且它是一个不可逆的字符串变换算法,换
句话说就是,即使你看到源程序和算法描述,也无法将一个 MD5 的值变换回原始的字符串,从数学原
理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5 的典型应用是对一段 Message(字节串)产生 fingerprint(指纹),以防止被“篡改”。举个例子,你将一
段话写在一个叫 readme.txt 文件中,并对这个 readme.txt 产生一个 MD5 的值并记录在案,然后你可以传播这个文件给别人,别人
如果修改了文件中的任何内容,你对这个文件重新计算 MD5 时就会发现。如果再有一个第三方的认证机构,用 MD5 还可以防止
文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5 还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以 MD5 值(或类似的其它算法)的方式保存的,用户 Login
的时候,系统是把用户输入的密码计算成 MD5 值,然后再去和系统中保存的 MD5 值进行比较,而系统并不“知道”用户的密码是
什么。
一些黑客破获这种密码的方法是一种被称为“跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另
一种是用排列组合方法生成的,先用 MD5 程序计算出这些字典项的 MD5 值,然后再用目标的 MD5 值在这个字典中检索。
即使假设密码的最大长度为 8,同时密码只能是字母和数字,共 26+26+10=62 个字符,排列组合出的字典的项数则是
内容:
MD5 简介
实现策略
实现过程
测试
Java Bean 简述
把 Java Bean 装到 JSP 里
到底能不能兼容?
参考资料
作者简介