编辑代码

import java.util.Map;
import java.util.HashMap;
import java.util.stream.Collectors;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;

public class Main{
    public static void main(String[] args) {
        String appSecret = "7e5b8261-b76b-4275-9939-38898139";
        // 示例 APPID&appSecret
        Map<String,Object> params = new HashMap<String,Object>();
        params.put("method","TRANS_TIME_MANAGE");
        params.put("appId", "2af7170f-9c46-4579-b8d8-e61d3d42");
        // 示例 APPID&appSecret
        params.put("timestamp", System.currentTimeMillis());
        params.put("vehicle","陕 A0000");
        // 1E1794161DBD36437DD01963DFE32377
        System.out.println(sign(params, appSecret));
    }
    public static String sign(Map<String,Object> params, String appSecret){
        if(params == null || appSecret == null || params.isEmpty()){
            return null;
        }
        StringBuffer sb = new StringBuffer("");
        sb.append(appSecret);
        params.keySet().stream().sorted().forEach(k->{
            if(params.get(k)!=null) {
                sb.append(k);
                sb.append(params.get(k));
            }
        });
        sb.append(appSecret);
        return md5(sb.toString());
    }
    public static String md5(String plainString) {
        String cipherString = null;
        try {
            // 获取实例
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            // 计算摘要
            byte[] cipherBytes = messageDigest.digest(plainString.getBytes(StandardCharsets.UTF_8));
            // 输出为 16 进制字符串
            StringBuilder sb = new StringBuilder();
            for (byte b : cipherBytes) {
                sb.append(String.format("%02X", b));
            }
            cipherString = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cipherString;
    }
}