skyouc
6 天以前 190d2d153d6737830f6173c7de1b0bc03e6d7dac
rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java
@@ -5,6 +5,7 @@
import java.lang.reflect.*;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
/**
@@ -371,4 +372,47 @@
        return intersection;
    }
    /**
     * 对汉字字符串进行MD5加密
     * @param input 要加密的汉字字符串
     * @return 32位小写MD5哈希值
     * @throws NoSuchAlgorithmException
     */
    public static String md5Chinese(String input) throws NoSuchAlgorithmException {
        if (input == null) {
            return null;
        }
        // 统一使用UTF-8编码
        byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] digest = md.digest(inputBytes);
        // 将字节数组转换为16进制字符串
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }
    /**
     * 验证汉字字符串与MD5哈希是否匹配
     * @param input 要验证的汉字字符串
     * @param md5Hash 存储的MD5哈希值
     * @return 如果匹配返回true,否则false
     */
    public static boolean verifyChinese(String input, String md5Hash) {
        try {
            String computedHash = md5Chinese(input);
            return computedHash.equals(md5Hash.toLowerCase());
        } catch (NoSuchAlgorithmException e) {
            // 理论上不会发生,因为MD5是Java标准库支持的
            return false;
        }
    }
}