MD5加密演算法

大菠萝zZ發表於2024-09-14

MD5簡介

MD5演算法是單向雜湊演算法的一種。單向雜湊演算法也稱為HASH演算法,是一種將任意長度的資訊壓縮至某一固定長度(稱之為訊息摘要)的函式(該壓縮過程不可逆)。在MD5演算法中,這個摘要是指將任意資料對映成一個128位長的摘要資訊。並且其是不可逆的,即從摘要資訊無法反向推演中原文,在演算過程中,原文的內容也是有丟失的。

工具類

package com.dbl.util;

import java.security.MessageDigest;


/**
 * @Author 高國鵬
 * @Create 2024/7/4 14:02
 * Description:
 */
public class MD5Util {

    /**
     * (支援大小寫,預設小寫)
     *
     * @param str       要加密的資料
     * @param uppercase 是否轉為大寫  大寫:T  小寫:F
     * @return
     */
    public static String getMD5(String str,boolean uppercase){
        // 加密後的16進位制字串
        String hexStr = "";
        try {
            // 此 MessageDigest 類為應用程式提供資訊摘要演算法的功能
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            // 轉換為MD5碼
            byte[] digest = md5.digest(str.getBytes("utf-8"));
            // byte[]位元組陣列轉16進位制
            StringBuffer sb = new StringBuffer(digest.length);
            String sTemp;
            for (int i = 0; i < digest.length; i++) {
                sTemp = Integer.toHexString(0xFF & digest[i]);
                if (sTemp.length() < 2)
                    sb.append(0);
                sb.append(sTemp.toUpperCase());
            }
            hexStr = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return uppercase ? hexStr : hexStr.toLowerCase();
        //        16位就是擷取一下就可以
        //System.out.println(MD5Util.getMD5(str,true).substring(8, 24));
    }
    
}

相關文章