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 "";
|
}
|
|
}
|