| | |
| | | public static String getMD5(String str) { |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | try { |
| | | // 创建MD5加密实例 |
| | | MessageDigest md = MessageDigest.getInstance("MD5"); |
| | | md.update(str.getBytes()); |
| | | byte b[] = md.digest(); |
| | | int i; |
| | | StringBuffer buf = new StringBuffer(""); |
| | | for (int offset = 0; offset < b.length; offset++) { |
| | | i = b[offset]; |
| | | if (i < 0) |
| | | i += 256; |
| | | if (i < 16) |
| | | buf.append("0"); |
| | | buf.append(Integer.toHexString(i)); |
| | | |
| | | // 执行加密操作 |
| | | byte[] messageDigest = md.digest(str.getBytes()); |
| | | |
| | | // 将得到的散列值转换为十六进制 |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (byte b : messageDigest) { |
| | | sb.append(String.format("%02x", b)); |
| | | } |
| | | //32位加密(小写) |
| | | return buf.toString(); |
| | | //32位加密(大写) |
| | | //return buf.toString().toUpperCase(); |
| | | // 16位的加密(小写) |
| | | //return buf.toString().substring(8, 24); |
| | | // 16位的加密(大写) |
| | | //return buf.toString().substring(8, 24).toUpperCase(); |
| | | |
| | | // 返回MD5散列值 |
| | | return sb.toString(); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } |