package com.songhua.web.controller.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Encryptor {

    // MD5 加密（32 位小写）
    public static String md5EncryptToLowercase(String str) {
        return md5Encrypt(str).toLowerCase();
    }

    // MD5 加密（32 位大写）
    public static String md5EncryptToUppercase(String str) {
        return md5Encrypt(str).toUpperCase();
    }

    // MD5 加密
    private static String md5Encrypt(String str) {
        try {
            // 创建 MessageDigest 对象
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 将输入字符串转换为字节数组
            byte[] inputBytes = str.getBytes();
            // 计算 MD5 哈希值
            byte[] hashBytes = md.digest(inputBytes);
            // 将字节数组转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte hashByte : hashBytes) {
                String hex = Integer.toHexString(0xFF & hashByte);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        String str = "123456";
        // 封装 MD5 加密结果（32 位小写）
        String encryptedLowercase = md5EncryptToLowercase(str);
        System.out.println("32-bit Lowercase: " + encryptedLowercase);
        // 封装 MD5 加密结果（32 位大写）
        String encryptedUppercase = md5EncryptToUppercase(str);
        System.out.println("32-bit Uppercase: " + encryptedUppercase);
    }
}