java api強(qiáng)大啊,基本上常用的都為我們想到了,沒(méi)有想到的,也有開(kāi)源項(xiàng)目。所以開(kāi)源就是好啊,希望我哪天也能為開(kāi)源作出自己的貢獻(xiàn)。
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 // 程序描述:MD5加密
4 //
5 // 作者:hcm
6 //
7 // 時(shí)間:2006-11-30
8 //
9 ////////////////////////////////////////////////////////////////////////////////
10 import java.security.*;
11 import java.security.spec.*;
12 class MD5
13 {
14 public final static String Md5 (String s)
15 {
16 //聲明并初始化一個(gè)字符數(shù)組,內(nèi)含16元素
17 // char hexDigits[] = new char[16];
18 char hexDigits[] = {
19 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '1', 'b', 'c', 'd', 'e', 'f'};
20 try
21 {
22 //待加密數(shù)據(jù)拆為字節(jié)數(shù)組
23 byte[] strTemp = s.getBytes ("utf-8");
24 //獲取MessageDigest 實(shí)例,應(yīng)用程序提供信息摘要算法的功能
25 MessageDigest mdTemp = MessageDigest.getInstance ("MD5");
26 //處理
27 mdTemp.update (strTemp);
28 //處理完畢,將處理結(jié)果存入md 字節(jié)數(shù)組
29 byte[] md = mdTemp.digest ();
30 int j = md.length;
31 //構(gòu)造一個(gè)字符數(shù)組,長(zhǎng)度為處理結(jié)果的2倍
32 char str[] = new char[j * 2];
33 int k = 0;
34 //遍歷md,j = 16
35 for (int i = 0; i < j; i++)
36 {
37 byte temp = md[i];
38 str[k++] = hexDigits[temp >>>4 & 0xf];
39 str[k++] = hexDigits[temp & 0xf];
40 }
41 //結(jié)束 k 正好是2j =32
42 return new String (str);
43 }
44 catch (Exception e)
45 {
46 return null;
47 }
48 }
49 public static void main (String[] args)
50 {
51 System.out.println (MD5.Md5 ("XX"));
52 }
53 }
54
posted on 2007-02-06 16:44
-274°C 閱讀(251)
評(píng)論(0) 編輯 收藏 所屬分類:
JAVA