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接口加密工具類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.