package com.hustner.md5.test; 
 
import java.io.UnsupportedEncodingException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
 
public class Md5Encrypt { 
        /** 
         * Used building output as Hex 
         */ 
        private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', 
                        '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 
                        'E', 'F' }; 
 
        /** 
         * 对字符串进行MD5加密 
         *  
         * @param text 
         *            明文 
         *  
         * @return 密文 
         */ 
        public static String md5(String text) { 
                MessageDigest msgDigest = null; 
 
                try { 
                        //获取一个MD5的实例 
                        msgDigest = MessageDigest.getInstance("MD5"); 
                } catch (NoSuchAlgorithmException e) { 
                        throw new IllegalStateException( 
                                        "System doesn't support MD5 algorithm."); 
                } 
 
                try { 
                        //一种是项目编码格式,数据库编码格式 
                        msgDigest.update(text.getBytes("UTF-8")); // 注意改接口是按照指定编码形式签名 
 
                } catch (UnsupportedEncodingException e) { 
 
                        throw new IllegalStateException( 
                                        "System doesn't support your  EncodingException."); 
 
                } 
 
                //整理好数据并且返回 
                byte[] bytes = msgDigest.digest(); 
 
                String md5Str = new String(encodeHex(bytes)); 
 
                return md5Str; 
        } 
 
        /** 
         * 对字符串进行MD5加密 
         *  
         * @param text 
         *            明文 
         *  
         * @return 密文 
         */ 
        public static String md5gj(String text) { 
                MessageDigest msgDigest = null; 
 
                try { 
                        msgDigest = MessageDigest.getInstance("MD5"); 
                } catch (NoSuchAlgorithmException e) { 
                        throw new IllegalStateException( 
                                        "System doesn't support MD5 algorithm."); 
                } 
 
                try { 
                        msgDigest.update(text.getBytes("GB2312")); // 注意改接口是按照指定编码形式签名 
 
                } catch (UnsupportedEncodingException e) { 
 
                        throw new IllegalStateException( 
                                        "System doesn't support your  EncodingException."); 
 
                } 
 
                byte[] bytes = msgDigest.digest(); 
                String md5Str = new String(encodeHex(bytes)); 
 
                return md5Str; 
        } 
 
        public static char[] encodeHex(byte[] data) { 
 
                int l = data.length; 
                System.out.println("长度:"+l); 
                char[] out = new char[l << 1]; 
                System.out.println("移位:"+(l << 2)); 
                 
                // two characters form the hex value. 
                for (int i = 0, j = 0; i < l; i++) { 
                        out[j++] = DIGITS[(0xF0 & data[i]) >>> 4]; 
                        out[j++] = DIGITS[0x0F & data[i]]; 
                } 
 
                return out; 
        } 
        public static void main(String[] args) { 
                System.out.println(Md5Encrypt.md5("123456" + "wlp.cn")); 
        } 
} 
 
 
 |   
        
 
    
    
    
     
 
 |