package api.common.util;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class EncryptUtil {

    /**
     * 获得MD5加密字符串（32位大写）
     */
    public static String getUpperMD5(String plainText) throws NoSuchAlgorithmException {
        byte[] hash;
        //创建一个MD5算法对象，并获得MD5字节数组,16*8=128位
        hash = MessageDigest.getInstance("MD5").digest(plainText.getBytes(StandardCharsets.UTF_8));

        //转换为十六进制字符串
        StringBuilder hex = new StringBuilder(hash.length * 2);
        for (byte b : hash) {
            if ((b & 0xFF) < 0x10) {
                hex.append("0");
            }
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hex.toString().toUpperCase();
    }

    /**
     * 获得MD5加密字符串（32位小写）
     */
    public static String getLowerMD5(String plainText) throws NoSuchAlgorithmException {
        byte[] hash;
        //创建一个MD5算法对象，并获得MD5字节数组,16*8=128位
        hash = MessageDigest.getInstance("MD5").digest(plainText.getBytes(StandardCharsets.UTF_8));

        //转换为十六进制字符串
        StringBuilder hex = new StringBuilder(hash.length * 2);
        for (byte b : hash) {
            if ((b & 0xFF) < 0x10) {
                hex.append("0");
            }
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hex.toString().toLowerCase();
    }
}
