package com.qxueyou.scc.base.util; import java.security.MessageDigest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class MD5Utils { private static final String UTF8 = "utf-8"; private static Logger log = LogManager.getLogger("MD5Utils"); /** * MD5数字签名 * @param src * @return * @throws Exception */ public static String md5Digest(String src) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] b = md.digest(src.getBytes(UTF8)); return byte2HexStr(b); } catch (Exception e) { log.error(e,e); } return null; } /** * 字节数组转化为大写16进制字符串 * @param b * @return */ private static String byte2HexStr(byte[] b) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < b.length; i++) { String s = Integer.toHexString(b[i] & 0xFF); if (s.length() == 1) { sb.append("0"); } sb.append(s.toUpperCase()); } return sb.toString(); } /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr){ MessageDigest md5 = null; try{ md5 = MessageDigest.getInstance("MD5"); }catch (Exception e){ e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++){ int val = ((int) md5Bytes[i]) & 0xff; if (val < 16){ hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } }