SignatureUtils.java 1.38 KB
package com.ruoyi.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.DigestUtils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.TreeMap;

public class SignatureUtils {
    private final static Logger logger = LoggerFactory.getLogger(SignatureUtils.class);

    // 生成签名
    public static String generateSignature(Map<String, Object> params, String secretKey) {
        TreeMap<String, Object> sortedParams = new TreeMap<>(params);
        StringBuilder sb = new StringBuilder();

        for (Map.Entry<String, Object> entry : sortedParams.entrySet()) {
            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
        sb.append("secretKey=").append(secretKey);

        return md5(sb.toString());
    }

    private static String md5(String input) {
        try {
            logger.info("MD5加密之前内容: {}", input);
            if (input == null || "".equals(input.trim())) {
                return null;
            }
            String md5 = DigestUtils.md5DigestAsHex(input.getBytes());
            logger.info("MD5加密之后内容: {}", md5);
            return md5;
        } catch (Exception e) {
            logger.error("MD5加密异常:", e);
            e.printStackTrace();
        }
        return null;
    }
}