首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實現密碼 MD5 加密工具類(含十六進制輸出)

     編輯:Java 相關知識

核心代碼

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.log4j.Logger;

public class PassWordDigester {
    private static final Logger logger = Logger.getLogger(PassWordDigester.class);
    private static final String ALGORITHM_MD5 = "MD5";

    public static String getPassMD5(String pass) {
        String keys = null;
        try {
            MessageDigest md = MessageDigest.getInstance(ALGORITHM_MD5);
            if (pass == null) pass = "";
            byte[] bPass = pass.getBytes("UTF-8");
            md.update(bPass);
            keys = bytesToHexString(md.digest());
        } catch (NoSuchAlgorithmException e) {
            logger.error("No MD5 algorithm!", e);
        } catch (Exception e) {
            logger.error("Encoding error", e);
        }
        return keys;
    }

    private static final String bytesToHexString(byte[] bArray) {
        StringBuffer sb = new StringBuffer(bArray.length * 2);
        for (byte b : bArray) {
            String hex = Integer.toHexString(0xFF & b);
            if (hex.length() == 1) sb.append('0');
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(getPassMD5("qazwsx")); // 測試輸出
    }
}

關鍵點

  • 使用 `MessageDigest.getInstance("MD5")`
  • 輸入字串以 UTF-8 編碼為位元組陣列
  • 摘要結果轉大寫十六進制字串(每位元兩字符,不足補 0)
  • 捕獲 `NoSuchAlgorithmException` 與編碼異常
  • Log4j 記錄錯誤

安全提醒

MD5 已不適合高安全性場景(碰撞攻擊、彩虹表),建議生產環境改用 BCrypt、PBKDF2、Argon2 等慢雜湊算法並加鹽。

出處:bianceng.cn

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved