Md5接口加密工具類



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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章