package cn.wisenergy.common.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Random; public class Md5Util { private static Logger log = LoggerFactory.getLogger(Md5Util.class); /** * MD5加密 * * @param value * @return */ public static String digestMD5(String value) { char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'}; byte[] strTemp = value.getBytes(); MessageDigest mdTemp = null; try { mdTemp = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { log.error(e.getMessage(), e); return null; } mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char[] str = new char[j * 2]; int k = 0; for (int i = 0; i < j; ++i) { byte byte0 = md[i]; str[(k++)] = hexDigits[(byte0 >>> 4 & 0xF)]; str[(k++)] = hexDigits[(byte0 & 0xF)]; } return new String(str); } /** * @param len * @return * @throws Exception * @Title generatePassword * @Description: 随机生成8位密码 必须含有数字字母 特殊字符 * @date 2018年12月11日 下午6:29:28 * @author lut */ public static String generatePassword(int len) throws Exception { char charr[] = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789".toCharArray(); StringBuilder sb = new StringBuilder(); Random r = new Random(); for (int x = 0; x < len; ++x) { sb.append(charr[r.nextInt(charr.length)]); } return sb.toString(); } private static String byteArrayToHexString(byte b[]) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++) resultSb.append(byteToHexString(b[i])); return resultSb.toString(); } private static String byteToHexString(byte b) { int n = b; if (n < 0) n += 256; int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + hexDigits[d2]; } public static String MD5Encode(String origin, String charsetname) { String resultString = null; try { resultString = new String(origin); MessageDigest md = MessageDigest.getInstance("MD5"); if (charsetname == null || "".equals(charsetname)) resultString = byteArrayToHexString(md.digest(resultString .getBytes())); else resultString = byteArrayToHexString(md.digest(resultString .getBytes(charsetname))); } catch (Exception exception) { } return resultString; } private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; }