这里给出两种相同的方法

方法一

/**
 * 利用MD5进行加密
 *
 * @param str 待加密的字符串
 * @return 加密后的字符串
 * @throws Exception
 */
public static String encodeByMd5(String str) {
    MessageDigest md;
    try {
        // 生成一个MD5加密计算摘要
        md = MessageDigest.getInstance("MD5");
        // 计算md5函数
        md.update(str.getBytes());
        // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
        // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
        String pwd = new BigInteger(1, md.digest()).toString(16);
        return pwd.toUpperCase();
    } catch (Exception e) {
        e.printStackTrace();
        return str;
    }
}

方法二

public static String encodeByMd5(String data) {
    try {
        byte[] bytes = MessageDigest.getInstance("MD5").digest(data.getBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            if ((b & 0xff) < 16)
                sb.append("0");
            sb.append(Long.toString(b & 0xff, 16));
        }
        return sb.toString().toUpperCase();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

MD5Util.java

import java.math.BigInteger;
import java.security.MessageDigest;

public class MD5Util {
    /**
     * 利用MD5进行加密
     *
     * @param str 待加密的字符串
     * @return 加密后的字符串
     * @throws Exception
     */
    public static String encodeByMd5(String data) {
        try {
            byte[] bytes = MessageDigest.getInstance("MD5").digest(data.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : bytes) {
                if ((b & 0xff) < 16)
                    sb.append("0");
                sb.append(Long.toString(b & 0xff, 16));
            }
            return sb.toString().toUpperCase();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }
    
    public static void main(String[] args) {
        System.out.println(encodeByMd5("123qwe"));
    }
}

hhhhh