From f8a73ae78727eab0063a26b4c57c3d451f1a0ab5 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 18 四月 2024 14:23:05 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
---
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 120 insertions(+), 0 deletions(-)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
new file mode 100644
index 0000000..8c8f0d9
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -0,0 +1,120 @@
+package com.mes.common.utils;
+
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.JwtBuilder;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.util.Base64;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 19:15
+ * @Description:
+ */
+public class JwtUtil {
+
+ //鏈夋晥鏈熶负
+ public static final Long JWT_TTL = 60 * 60 * 1000L;// 60 * 60 *1000 涓�涓皬鏃�
+ //璁剧疆绉橀挜鏄庢枃
+ public static final String JWT_KEY = "sangeng";
+
+ public static String getUUID() {
+ String token = UUID.randomUUID().toString().replaceAll("-", "");
+ return token;
+ }
+
+ /**
+ * 鐢熸垚jtw
+ *
+ * @param subject token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
+ * @return
+ */
+ public static String createJWT(String subject) {
+ JwtBuilder builder = getJwtBuilder(subject, null, getUUID());// 璁剧疆杩囨湡鏃堕棿
+ return builder.compact();
+ }
+
+ /**
+ * 鐢熸垚jtw
+ *
+ * @param subject token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
+ * @param ttlMillis token瓒呮椂鏃堕棿
+ * @return
+ */
+ public static String createJWT(String subject, Long ttlMillis) {
+ JwtBuilder builder = getJwtBuilder(subject, ttlMillis, getUUID());// 璁剧疆杩囨湡鏃堕棿
+ return builder.compact();
+ }
+
+ private static JwtBuilder getJwtBuilder(String subject, Long ttlMillis, String uuid) {
+ SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ SecretKey secretKey = generalKey();
+ long nowMillis = System.currentTimeMillis();
+ Date now = new Date(nowMillis);
+ if (ttlMillis == null) {
+ ttlMillis = JwtUtil.JWT_TTL;
+ }
+ long expMillis = nowMillis + ttlMillis;
+ Date expDate = new Date(expMillis);
+ return Jwts.builder()
+ .setId(uuid) //鍞竴鐨処D
+ .setSubject(subject) // 涓婚 鍙互鏄疛SON鏁版嵁
+ .setIssuer("sg") // 绛惧彂鑰�
+ .setIssuedAt(now) // 绛惧彂鏃堕棿
+ .signWith(signatureAlgorithm, secretKey) //浣跨敤HS256瀵圭О鍔犲瘑绠楁硶绛惧悕, 绗簩涓弬鏁颁负绉橀挜
+ .setExpiration(expDate);
+ }
+
+ /**
+ * 鍒涘缓token
+ *
+ * @param id
+ * @param subject
+ * @param ttlMillis
+ * @return
+ */
+ public static String createJWT(String id, String subject, Long ttlMillis) {
+ JwtBuilder builder = getJwtBuilder(subject, ttlMillis, id);// 璁剧疆杩囨湡鏃堕棿
+ return builder.compact();
+ }
+
+ public static void main(String[] args) throws Exception {
+ String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjYWM2ZDVhZi1mNjVlLTQ0MDAtYjcxMi0zYWEwOGIyOTIwYjQiLCJzdWIiOiJzZyIsImlzcyI6InNnIiwiaWF0IjoxNjM4MTA2NzEyLCJleHAiOjE2MzgxMTAzMTJ9.JVsSbkP94wuczb4QryQbAke3ysBDIL5ou8fWsbt_ebg";
+ Claims claims = parseJWT(token);
+ System.out.println(claims);
+ }
+
+ /**
+ * 鐢熸垚鍔犲瘑鍚庣殑绉橀挜 secretKey
+ *
+ * @return
+ */
+ public static SecretKey generalKey() {
+ byte[] encodedKey = Base64.getDecoder().decode(JwtUtil.JWT_KEY);
+ SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
+ return key;
+ }
+
+ /**
+ * 瑙f瀽
+ *
+ * @param jwt
+ * @return
+ * @throws Exception
+ */
+ public static Claims parseJWT(String jwt) throws Exception {
+ SecretKey secretKey = generalKey();
+ return Jwts.parser()
+ .setSigningKey(secretKey)
+ .parseClaimsJws(jwt)
+ .getBody();
+ }
+
+
+}
--
Gitblit v1.8.0