package com.dji.sample.droneairport.utils;
|
|
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 java.nio.charset.StandardCharsets;
|
import java.util.Base64;
|
|
public class AuthUtil {
|
|
/**
|
* 国土调查云获取token
|
* 1、获取当前时间的时间的毫秒时间戳A
|
* 2、用调用方的数字证书B和A进行字符串顺序拼接得到字符串C
|
* 3、获取字符串C的UTF-8字节数组D
|
* 4、采用调用方的私钥,使用SM2签名算法对字节数组D进行签名得到字节数组E
|
* 5、对字节数组E进行base64编码得到字符串F
|
* 6、组装得到token:{B}.{A}.{F}
|
* @return
|
*/
|
@SneakyThrows
|
public static String getToken() {
|
long timestamp = System.currentTimeMillis();
|
String certificateB = "044D6061FC08A19D3F32CEAA8CF6679B40500008FD741FC26DE7E50AEBF3A9115D47274437730EADEDAEF0CCC4853C5F0B35B30C6AEA83A5F6FBCA4ABEAC9E3B98"; // 示例证书信息
|
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(StandardCharsets.UTF_8);
|
String F = Base64.getEncoder().encodeToString(E);
|
return certificateB + "." + timestamp + "." + F;
|
}
|
|
public static void main(String[] args) {
|
System.out.println("token:" + getToken());
|
}
|
|
}
|