package com.ruoyi.common.core.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { /** * 给指定字符串按照md5算法去加密 * * @param psd 需要加密的密码 加盐处理 * * @return md5后的字符串 */ public static String encoder(String psd) { try { //加盐处理 psd = psd + "mobilesafe"; //1,指定加密算法类型 MessageDigest digest = MessageDigest.getInstance("MD5"); //2,将需要加密的字符串中转换成byte类型的数组,然后进行随机哈希过程 byte[] bs = digest.digest(psd.getBytes()); // System.out.println(bs.length); //3,循环遍历bs,然后让其生成32位字符串,固定写法 //4,拼接字符串过程 StringBuffer stringBuffer = new StringBuffer(); for (byte b : bs) { int i = b & 0xff; //int类型的i需要转换成16机制字符 String hexString = Integer.toHexString(i); // System.out.println(hexString); if (hexString.length() < 2) { hexString = "0" + hexString; } stringBuffer.append(hexString); } //5,打印测试 System.out.println(stringBuffer.toString()); return stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } /** * MD5加密字符串 * * @param str * @return */ public static String getMD5(String str) { if (StringUtils.isNotEmpty(str)) { try { // 创建MD5加密实例 MessageDigest md = MessageDigest.getInstance("MD5"); // 执行加密操作 byte[] messageDigest = md.digest(str.getBytes()); // 将得到的散列值转换为十六进制 StringBuilder sb = new StringBuilder(); for (byte b : messageDigest) { sb.append(String.format("%02x", b)); } // 返回MD5散列值 return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } return ""; } }