From 7c10b78c463721d2cae03ccd88ba793cb53b6938 Mon Sep 17 00:00:00 2001
From: aix <vip_xiaobin810@163.com>
Date: Thu, 15 Aug 2024 15:47:17 +0800
Subject: [PATCH] 国土调查云token
---
src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java | 47 +++++++++++++++++++++++++++++++----------------
pom.xml | 2 +-
2 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/pom.xml b/pom.xml
index d349227..6852052 100644
--- a/pom.xml
+++ b/pom.xml
@@ -227,7 +227,7 @@
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
- <version>5.4.0</version>
+ <version>5.5.9</version>
<scope>compile</scope>
</dependency>
diff --git a/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java b/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
index eaa1306..1276210 100644
--- a/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
+++ b/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
@@ -1,15 +1,12 @@
package com.dji.sample.droneairport.utils;
-import com.dji.sample.droneairport.utils.SM2.ModeTypeEnum;
-import com.dji.sample.droneairport.utils.SM2.Utils;
-import com.dji.sample.territory.utils.SM2SignUtil;
-import com.dji.sample.territory.utils.jym.SM2SignVO;
-import com.dji.sample.territory.utils.jym.SM2SignVerUtils;
-import com.dji.sample.territory.utils.jym.Util;
-import lombok.SneakyThrows;
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.crypto.asymmetric.SM2;
+
import java.nio.charset.StandardCharsets;
-import java.util.Base64;
+
public class AuthUtil {
@@ -23,16 +20,34 @@
* 6、组装得到token:{B}.{A}.{F}
* @return
*/
- @SneakyThrows
public static String getToken() {
+ String privateKey = "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3";
+ String publicKey = "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F";
+ SM2 sm2 = new SM2(privateKey, publicKey);
+ sm2.usePlainEncoding();
+ //SM2 token生成
+ String certCode = "UAV32_WHR4E3UAJZTE3KE5IZFDGL7CBU";
long timestamp = System.currentTimeMillis();
- String certificateB = "5DED9AC421AC4FD8B03C5E7236A9A201"; // 示例证书信息
- String C = certificateB + timestamp;
- byte[] D = C.getBytes(StandardCharsets.UTF_8);
- SM2SignVO sm2signv0 = SM2SignVerUtils.Sign2SM2(Util.hexStringToBytes("23E57DA1E4AB865CCBC325B668762207DEF74345B782237808AE0BABDF26734D"), D);
- byte[] E = sm2signv0.getSm2_signForHard().getBytes();
- String F = Base64.getEncoder().encodeToString(E);
- return certificateB + "." + timestamp + "." + F;
+ //拼接待签名数据
+ String needSignData = certCode + timestamp;
+ byte[] needSignDataByte = needSignData.getBytes(StandardCharsets.UTF_8);
+ //签名
+ byte[] signData = sm2.sign(needSignDataByte);
+ String signDataHex = HexUtil.encodeHexStr(signData);
+ System.out.println("sign Hex:" + signDataHex);
+ String signDataBase64 = Base64.encode(signData);
+ System.out.println("sign Base64:" + signDataBase64);
+ //生成token
+ String token = certCode + "." + timestamp + "." + signDataBase64;
+ System.out.println("token:" + token);
+ //SM2 token验证
+ boolean rst1 = sm2.verify(needSignDataByte, signData);
+ System.out.println("verify result:" + rst1);
+ boolean rst2 = sm2.verify(needSignDataByte, HexUtil.decodeHex(signDataHex));
+ System.out.println("verify result:" + rst2);
+ boolean rst3 = sm2.verify(needSignDataByte, Base64.decode(signDataBase64));
+ System.out.println("verify result:" + rst3);
+ return certCode + "." + timestamp + "." + signDataBase64;
}
public static void main(String[] args) {
--
Gitblit v1.9.3