From 8208e8137a3d950152d358ccd2ab0a8dc08cf4de Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期四, 14 九月 2023 17:13:20 +0800
Subject: [PATCH] 机构&&考点

---
 ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java
new file mode 100644
index 0000000..e53e6af
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java
@@ -0,0 +1,78 @@
+package com.ruoyi.common.signature;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/9/7
+ * @time: 11:01
+ */
+public class TokenUtils {
+    private static final Logger logger = LoggerFactory.getLogger(TokenUtils.class);
+    private static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a",
+            "b", "c", "d", "e",
+            "f" };
+    public static String getSignature(String appPwd, String paramUrl) {
+        if (StringUtils.isNotBlank(paramUrl)) {
+            try {
+                paramUrl = URLDecoder.decode(paramUrl, "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                logger.error("生成 signData 失败:", e);
+                throw new RuntimeException("生成 signData 失败:", e);
+            }
+        }
+        String[] paraArray = new String[] {};
+        if (StringUtils.isNotBlank(paramUrl)) {
+            String[] queryArray = paramUrl.split("&");
+            paraArray = (String[]) ArrayUtils.addAll(queryArray, paraArray);
+        }
+        Arrays.sort(paraArray);
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(appPwd);
+        buffer.append(":");
+        for (int i = 0; i < paraArray.length; i++) {
+            buffer.append(paraArray[i]);
+            buffer.append("&");
+        }
+        buffer.deleteCharAt(buffer.length() - 1);
+        buffer.append(":");
+        buffer.append(appPwd);
+        MessageDigest md = null;
+        try {
+            md = MessageDigest.getInstance("SHA-256");
+            md.update(buffer.toString().getBytes("UTF-8"));
+        } catch (NoSuchAlgorithmException e) {
+            logger.error("生成 signData 失败:", e);
+            throw new RuntimeException("生成 signData 失败.", e);
+        } catch (UnsupportedEncodingException e) {
+            logger.error("生成 signData 失败:", e);
+            throw new RuntimeException("生成 signData 失败.", e);
+        }
+        String encode = byteArrayToHexString(md.digest());
+        return encode;
+    }
+    private static String byteArrayToHexString(byte[] byteArray) {
+        StringBuffer sb = new StringBuffer();
+        for (byte byt : byteArray) {
+            sb.append(byteToHexString(byt));
+        }
+        return sb.toString();
+    }
+    private static String byteToHexString(byte byt) {
+        int n = byt;
+        if (n < 0)
+            n = 256 + n;
+        return hexDigits[n / 16] + hexDigits[n % 16];
+    }
+}
+

--
Gitblit v1.9.2