【 tulaoshi.com - 编程语言 】
                             
                            ★ 编程思路: 
java.security包中的MessageDigest类提供了计算消息摘要的方法, 首先生成对象,执行其update( )方法可以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。具体步骤如下: 
(1)生成MessageDigest对象 MessageDigest m=MessageDigest.getInstance("MD5"); 
分析:和2.2.1小节的KeyGenerator类一样。MessageDigest类也是一个工厂类,其构造器是受保护的,不允许 
直接使用new MessageDigist( )来创建对象,而必须通过其静态方法getInstance( )生成MessageDigest对象。 
其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。若对MD5算法的细节感兴趣可参考 
http://www.gztarena.com/rfc1321.txt。 
(2)传入需要计算的字符串 m.update(x.getBytes("UTF8" )); 
分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用 
getBytes( )方法生成字符串数组。 
(3)计算消息摘要 byte s[ ]=m.digest( ); 
分析:执行MessageDigest对象的digest( 广州达内java)方法完成计算,计算的结果通过字节类型的数组返回。 
(4)处理计算结果 必要的话可以使用如下代码将计算结果s转换为字符串。 
代码如下: 
String result=""; 
for (int i=0; i 
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6); 
}  
★代码与分析: 
完整程序如下: 
代码如下: 
import java.security.*; 
public class DigestPass{ 
public static void main(String args[ ]) throws Exception{ 
String x=args[0]; 
MessageDigest m=MessageDigest.getInstance("MD5"); 
m.update(x.getBytes("UTF8")); 
byte s[ ]=m.digest( ); 
String result=""; 
for (int i=0; i 
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6); 
} 
System.out.println(result); 
} 
}  
★运行程序 输入java DigestCalc abc来运行程序,其中命令行参数abc是原始数据,屏幕输出计算后的消息摘要: 
900150983cd24fb0d6963f7d28e17f72。