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