From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:41:54 +0800
Subject: [PATCH] commit
---
src/main/java/com/gk/firework/Domain/Utils/SignUtils.java | 69 ++++++++++++++++++++++++++++++++++
1 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Domain/Utils/SignUtils.java b/src/main/java/com/gk/firework/Domain/Utils/SignUtils.java
new file mode 100644
index 0000000..afd8397
--- /dev/null
+++ b/src/main/java/com/gk/firework/Domain/Utils/SignUtils.java
@@ -0,0 +1,69 @@
+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<length; ++i){
+ //从62个的数字或字母中选择
+
+ int number=random.nextInt(62);
+
+ //将产生的数字通过length次承载到sb中
+
+ randomStr.append(str.charAt(number));
+ }
+
+ //将承载的字符转换成字符串
+
+ return randomStr.toString();
+ }
+
+ //类似微信接口的签名生成方法
+ public static String createSign(Map<String, String> params, String privateKey){
+ StringBuilder sb = new StringBuilder();
+ // 将参数以参数名的字典升序排序
+ Map<String, String> sortParams = new TreeMap<String, String>(params);
+ // 遍历排序的字典,并拼接"key=value"格式
+ for (Map.Entry<String, String> 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;
+ }
+
+}
--
Gitblit v1.9.2