MD5加密

 

java.security包中的MessageDigest类提供了计算消息摘要(即生成散列码)的方法,首先生成对象,执行其update( )方法可
以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。具体步骤如下:
(1)生成MessageDigest对象

MessageDigest m=MessageDigest.getInstance("MD5");

MessageDigest类也是一个工厂类,其构造器是受保护的,不允许
直接使用new MessageDigist( )来创建对象,而必须通过其静态方法getInstance( )生成MessageDigest对象。
其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
(2)传入需要计算的字符串

m.update(x.getBytes("UTF8" ));

分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用getBytes( )方法生成字符串数组。
(3)计算消息摘要

byte s[ ]=m.digest( );

分析:执行MessageDigest对象的digest( )方法完成计算,计算的结果通过字节类型的数组返回。
(4)处理计算结果
必要的话可以使用如下代码将计算结果(byte数组)转换为字符串。

static String convertToHexString(byte data[]) {
StringBuffer strBuffer = new StringBuffer();
for (int i = 0; i < data.length; i++) {
strBuffer.append(Integer.toHexString(0xff & data[i]));
}
return strBuffer.toString();
}

 

 

 

 

 1 package com.tem1.util;
 2 
 3 import java.security.MessageDigest;
 4 
 5 public class MD5 {
 6     public static void main(String[] args) {
 7 
 8         try {
 9             String s1 =convertToHexString(MD5.getMD5("abc"));
10             String s2 =convertToHexString(MD5.getMD5("abc"));
11 
12             System.out.println(s1);
13             System.out.println(s2);
14 
15         } catch (Exception e) {
16 
17             e.printStackTrace();
18         }
19 
20     }
21 
22     /**
23      * 得到消息摘要
24      * 
25      * */
26     public static byte[] getMD5(String plainText) {
27         MessageDigest m;
28         byte[] ciphertext = null;
29         try {
30             m = MessageDigest.getInstance("MD5");
31             m.update(plainText.getBytes("UTF8"));
32             ciphertext = m.digest();
33            
34         } catch (Exception e) {
35 
36             e.printStackTrace();
37         }
38 
39         return ciphertext; // 密文
40 
41     }
42 
43     /**
44      * 计算摘要
45      * 
46      */
47     public static String convertToHexString(byte data[]) {
48         StringBuffer strBuffer = new StringBuffer();
49         for (int i = 0; i < data.length; i++) {
50             strBuffer.append(Integer.toHexString(0xff & data[i]));
51         }
52         return strBuffer.toString();
53     }
54 }

 

MD5.getMD5("abc").toString();
MD5.getMD5("abc").toString();

 

 

 String s1 =convertToHexString(MD5.getMD5("abc"));
 String s2 =convertToHexString(MD5.getMD5("abc"));



 

posted on 2014-10-11 13:37  @冰糖  阅读(186)  评论(0编辑  收藏  举报

导航