MD5

 1 package com.core.util;
 2 
 3 import java.security.MessageDigest;
 4 
 5 public class MD5 {
 6     
 7     //十六进制下数字到字符的映射数组
 8     private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
 9             "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
10 
11     /** 把inputString加密 */
12     public static String createPassword(String inputString) {
13         return encodeByMD5(inputString);
14     }
15 
16     /**
17      * 
18      * Creation  Date:2008-3-14
19      * TODO    验证输入的密码是否正确
20      * @param password 加密后的源密码
21      * @param inputString 输入字符串
22      * @return boolean true为真,false为假
23      * @Author tianw
24      */
25     public static boolean authenticatePassword(String password,
26             String inputString) {
27         if (password.equals(encodeByMD5(inputString))) {
28             return true;
29         } else {
30             return false;
31         }
32     }
33 
34     
35     /** 对字符串进行MD5加密 */
36     private static String encodeByMD5(String originString) {
37         if (originString != null) {
38             try {
39                 // 创建具有指定算法名称的信息摘要
40                 MessageDigest md = MessageDigest.getInstance("MD5");
41                 // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
42                 byte[] results = md.digest(originString.getBytes());
43                 // 将得到的字节数组变成字符串返回
44                 String resultString = byteArrayToHexString(results);
45                 return resultString.toUpperCase();
46             } catch (Exception ex) {
47                 ex.printStackTrace();
48             }
49         }
50         return null;
51     }
52     
53     /**
54      * 
55      * Creation  Date:2008-3-14
56      * TODO    转换字节数组为十六进制字符串
57      * @param b  字节数组
58      * @return String 十六进制字符串
59      * @Author tianw
60      */
61     private static String byteArrayToHexString(byte[] b) {
62         StringBuffer resultSb = new StringBuffer();
63         for (int i = 0; i < b.length; i++) {
64             
65             String ss = byteToHexString(b[i]);            
66             resultSb.append(ss);
67         }
68         
69         return resultSb.toString();
70     }
71 
72     
73     /** 将一个字节转化成十六进制形式的字符串 */
74     private static String byteToHexString(byte b) {
75         int n = b;
76         if (n < 0)
77             n = 256 + n;
78         int d1 = n / 16;
79         int d2 = n % 16;
80         return hexDigits[d1] + hexDigits[d2];
81     }
82     
83     public static void main(String[] args) {
84         System.out.println(MD5.createPassword("123456"));//8994E0A54CF3B38CC08F251780375F19
85     }
86 }
原文地址:https://www.cnblogs.com/sallet/p/3941423.html