MD5加密工具类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.lijianbo.test;
 
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.lang3.StringUtils;
 
/**
 * MD5加密算法工具类
 * @author bbo
 *
 */
public class MD5Utils {
    /*
     * 为了提高安全性,我们又额外加了一串随机字符串
     */
    private static final String USER_PWD_ENCP_PREFIX = "LDHDSFHWRERHESLM";
 
    /**
     * 用户密码加密
     * @param beforeEncp
     * @return
     */
    public static String encode(final String beforeEncp){
        if(StringUtils.isBlank(beforeEncp)){
            return beforeEncp;
        }
        return encryptMD5(USER_PWD_ENCP_PREFIX+beforeEncp);
    }
     
    /**
     * md5加密
     * @param strInput
     * @return
     */
    private static String encryptMD5(final String strInput) {
        StringBuffer buf = null;
        try {
            // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)  
            MessageDigest md = MessageDigest.getInstance("MD5"); 
            // 输入的字符串转换成字节数组   
            md.update(strInput.getBytes());
             // 转换并返回结果,也是字节数组,包含16个元素  
            byte b[] = md.digest();
            // new一个StringBuffer,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))  
            buf = new StringBuffer(b.length * 2);
            //遍历
            for (int i = 0; i < b.length; i++) {
                if (((int) b[i] & 0xff) < 0x10) { //(int) b[i] & 0xff 转换成无符号整型
                    buf.append("0");
                }
                //Long.toHexString( 无符号长整数的十六进制字符串表示
                buf.append(Long.toHexString((int) b[i] & 0xff)); 
            }
        catch (NoSuchAlgorithmException ex) {
            ex.printStackTrace();
        }
        return buf==null?null:buf.toString(); //返回加密后 的结果
    }
     
}

调用方式:

1
String passwordMd5=MD5Utils.encode(password);             


生成第三方秘钥:

1
2
3
4
5
6
7
8
public static void main(String[] args) {
    try {
        System.out.println(MD5Utils.encode("168544234123234192.168.12.10disanfangmiyao123456789012345""GBK").length());;
    catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}