package com.example.demo.utils; import java.security.MessageDigest; public class MD5 { public static String md5(String text) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] ssd = md5.digest(text.getBytes("utf-8")); return byteArrayToHexString(ssd); } catch (Exception ex) { ex.printStackTrace(); return null; } } //下面这个函数用于将字节数组换成成16进制的字符串 public static String byteArrayToHex(byte[] byteArray) { // 首先初始化一个字符数组,用来存放每个16进制字符 char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)) char[] resultCharArray = new char[byteArray.length * 2]; // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去 int index = 0; for (byte b : byteArray) { resultCharArray[index++] = hexDigits[b >>> 4 & 0xf]; resultCharArray[index++] = hexDigits[b & 0xf]; } // 字符数组组合成字符串返回 return new String(resultCharArray); } /** * 字节转十六进制 * * @param byteMd5 需要进行转换的byte字节 * @return 转换后的Hex字符串 */ public static String byteToHex(byte[] byteMd5) { StringBuilder reluststr = new StringBuilder(); for (int i = 0; i < byteMd5.length; i++) { String hex = Integer.toHexString(byteMd5[i] & 0xFF); if (hex.length() < 2) { hex = "0" + hex; } reluststr.append(hex); } return reluststr.toString(); } /** * @param b byte[] * @return String */ public static String byteArrayToHexString(byte[] b) { String result = ""; for (int i = 0; i < b.length; i++) { result += byteToHexString(b[i]); } return result; } private static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; /** * 将字节转换为对应�?16进制明文 * @param b byte * @return String */ public static String byteToHexString(byte b) { int n = b; if (n < 0) { n = 256 + n; } int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + hexDigits[d2]; } public static void main(String[] args) { //System.out.println(byteToHexString((byte)-99)); String str = "appid=mjce55eba54da18029&deviceno=&personnelnoes=null×temp=20190416112516142&key=80af998940d64e529522efd0d7fbbd43"; String ened = MD5.md5(str); System.out.println("xx--" + ened.length()); System.out.println(ened); } }