package com.gk.firework.Domain.Utils; import java.util.Map; import java.util.Random; import java.util.TreeMap; import static com.gk.firework.Domain.Utils.StringUtils.MD5Encoder; public class SignUtils { public static String getTimestamp() { //生成时间戳 long timestampLong =System.currentTimeMillis(); String timestampStr = String.valueOf(timestampLong); return timestampStr; } public static String getNonceStr(int length){ //生成随机字符串 String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890"; Random random=new Random(); StringBuffer randomStr=new StringBuffer(); // 设置生成字符串的长度,用于循环 for(int i=0; i params, String privateKey){ StringBuilder sb = new StringBuilder(); // 将参数以参数名的字典升序排序 Map sortParams = new TreeMap(params); // 遍历排序的字典,并拼接"key=value"格式 for (Map.Entry entry : sortParams.entrySet()) { String key = entry.getKey(); String value = entry.getValue().trim(); if (!StringUtils.isEmpty(value)) sb.append("&").append(key).append("=").append(value); } String stringA = sb.toString().replaceFirst("&",""); String stringSignTemp = stringA + "&"+"appkey="+privateKey; //将签名使用MD5加密并全部字母变为大写 String signValue = MD5Encoder(stringSignTemp,"utf-8").toUpperCase(); System.out.println("stringA+privateKey后MD5加密+转换全部大写生成sign为: "+signValue); return signValue; } }