import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
/**
*
* @ClassName:MD5Utils
* @Description: 加密工具类
* @date 2019-08-07 18:37
*/
/**
* MD5加密算法工具类
*
*/
public class MD5Utils {
/**
* 加盐
* @param length为生成几位数的盐
* @return
*/
public static String getComplexRandomString(int length) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
/**
* MD5加密
* @param plainText是要加密的参数
* @return 会返回32位由阿拉伯数字加小写字母随机组成的字符串 例如:传入“xxx”
* 会返回: f561aaf6ef0bf14d4208bb46a4ccb3ad
*/
public static String getMD5Encode(String plainText){
if(StringUtil.isNotBlank(plainText)){
//定义一个字节数组
byte[] secretBytes = null;
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//对字符串进行加密
md.update(plainText.getBytes());
//获得加密后的数据
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法!");
}
//将加密后的数据转换为16进制数字
String md5code = new BigInteger(1, secretBytes).toString(16);
// 如果生成数字未满32位,需要前面补0
int num = 32;
String str = "0";
for (int i = 0; i < num - md5code.length(); i++) {
md5code = str + md5code;
}
return md5code;
}else {
String str = "密码不能为空";
return str;
}
}
}
Md5接口加密工具类
最新推荐文章于 2023-06-15 15:18:03 发布