|
@@ -0,0 +1,167 @@
|
|
|
+package com.fdkankan.reg;
|
|
|
+
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.fdkankan.reg.dto.CamRegDto;
|
|
|
+import com.fdkankan.reg.dto.CamRegSDto;
|
|
|
+import com.fdkankan.reg.dto.MachineRegDto;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import cn.hutool.core.util.ObjUtil;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author Xiewj
|
|
|
+ * @date 2023/7/6
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class RegCodeUtil {
|
|
|
+
|
|
|
+ /***
|
|
|
+ * @description:生成安装码
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: machineCode 机器码
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static String GenRegeditCode(String machineCode){
|
|
|
+ String s = Crypt.encryptAES(machineCode, true);
|
|
|
+ log.info("安装注册码:{}",s);
|
|
|
+ return s;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * @description:生成相机激活码
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: plaintext 需要加密的字符串 [{"SN": "SN000001", "TOSN": "", "OPTION": "ADD"}]
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static String GenRegeditCamCode(String plaintext){
|
|
|
+ String s = Crypt.encryptAES(plaintext, true);
|
|
|
+ log.info("相机注册码:{}",s);
|
|
|
+ log.info("相机注册码原始长度:{}",s.length());
|
|
|
+ String code = DeflaterUtils.zipString(s);
|
|
|
+ log.info("相机注册码压缩:{}",code);
|
|
|
+ log.info("相机注册码压缩长度:{}",code.length());
|
|
|
+
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * @description 获取激活数据
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: plaintext 需要转换成对象的字符串
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static MachineRegDto ParseMachineCode(String plaintext){
|
|
|
+ try {
|
|
|
+ String source = Crypt.decryptAES(plaintext, true);
|
|
|
+ log.info("相机注册码解密:{}",source);
|
|
|
+ MachineRegDto t = JSON.toJavaObject(JSONObject.parseObject(source) , MachineRegDto.class);
|
|
|
+ return t;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * @description 获取激活数据
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: plaintext 需要转换成对象的字符串
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static CamRegDto ParseRegeditCamCode(String machineCode , String plaintext){
|
|
|
+ try {
|
|
|
+ //解压
|
|
|
+ String code = DeflaterUtils.unzipString(plaintext);
|
|
|
+ log.info("相机注册码解压:{}",code);
|
|
|
+ String source = Crypt.decryptAES(code, true);
|
|
|
+ log.info("相机注册码解密:{}",source);
|
|
|
+ CamRegDto t = JSON.toJavaObject(JSONObject.parseObject(source) , CamRegDto.class);
|
|
|
+ if (ObjUtil.isNull(t.getMachineCode()) && !t.getMachineCode().equals(machineCode)){
|
|
|
+ throw new RuntimeException("校验失败");
|
|
|
+ }
|
|
|
+ return t;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * @description:生成相机激活码多个
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: plaintext 需要加密的字符串 [{"SN": "SN000001", "TOSN": ""},{"SN": "SN000001", "TOSN": ""}]
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static String batchGenRegeditCamCode( CamRegSDto dtos){
|
|
|
+ String camCode = GenRegeditCamCode(JSONObject.toJSONString(dtos).toString());
|
|
|
+ return camCode;
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * @description 获取激活数据
|
|
|
+ * @author: Xiewj
|
|
|
+ * @date: 2023/7/6 15:01
|
|
|
+ * @param: plaintext 需要转换成对象的字符串
|
|
|
+ * @return:
|
|
|
+ **/
|
|
|
+ public static CamRegSDto BatchParseRegeditCamCode(String machineCode,String plaintext){
|
|
|
+ try {
|
|
|
+ //解压
|
|
|
+ String code = DeflaterUtils.unzipString(plaintext);
|
|
|
+ log.info("批量生成相机码解压:{}",code);
|
|
|
+ String source = Crypt.decryptAES(code, true);
|
|
|
+ CamRegSDto t = JSON.toJavaObject(JSONObject.parseObject(source) , CamRegSDto.class);
|
|
|
+ if (ObjUtil.isNull(t.getMachineCode()) && !t.getMachineCode().equals(machineCode)){
|
|
|
+ throw new RuntimeException("校验失败");
|
|
|
+ }
|
|
|
+ return t;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static void main(String[] args) {
|
|
|
+ //读取机器码
|
|
|
+ MachineRegDto machineRegDto = ParseMachineCode("E4E73A8EB46B8EA252B9C1B34048F60679FB345BC6F233A8369E355828B68F69FDAB2150B286C0E0A397D960183716F8BF4C8B086D4C5BB5D1243CB9AA924B6B8A0ED22ED413BD27681CE5C36198EBF7FE06E75CD444B46A7721E2462DD234EB6B5B780F1FB9CF3C26C3ED4DB7B08B20");
|
|
|
+ System.out.println(machineRegDto);
|
|
|
+
|
|
|
+
|
|
|
+ String machineCode="E4E73A8EB46B8EA252B9C1B34048F60679FB345BC6F233A8369E355828B68F69FDAB2150B286C0E0A397D960183716F8BF4C8B086D4C5BB5D1243CB9AA924B6B8A0ED22ED413BD27681CE5C36198EBF7FE06E75CD444B46A7721E2462DD234EB6B5B780F1FB9CF3C26C3ED4DB7B08B20";
|
|
|
+ //生成安装注册码
|
|
|
+ String s = GenRegeditCode(machineCode);
|
|
|
+
|
|
|
+ CamRegDto camRegDto1=new CamRegDto();
|
|
|
+ camRegDto1.setSn("00000001");
|
|
|
+ camRegDto1.setMachineCode(machineCode);
|
|
|
+ //生成相机注册码
|
|
|
+ String camCode = GenRegeditCamCode( JSON.toJSONString(camRegDto1));
|
|
|
+ //校验相机注册码
|
|
|
+ CamRegDto camRegDto3 = ParseRegeditCamCode(machineCode,camCode);
|
|
|
+
|
|
|
+
|
|
|
+ List<CamRegDto> list=new ArrayList<>();
|
|
|
+
|
|
|
+ CamRegDto camRegDto=new CamRegDto();
|
|
|
+ camRegDto.setSn("00000001");
|
|
|
+ list.add(camRegDto);
|
|
|
+
|
|
|
+ CamRegDto camRegDto2=new CamRegDto();
|
|
|
+ camRegDto2.setSn("00000001");
|
|
|
+ list.add(camRegDto2);
|
|
|
+
|
|
|
+ CamRegSDto CamReg=new CamRegSDto();
|
|
|
+ CamReg.setMachineCode(machineCode);
|
|
|
+ CamReg.setCamRegs(list);
|
|
|
+
|
|
|
+ String camCode1 = batchGenRegeditCamCode( CamReg);
|
|
|
+
|
|
|
+// List<CamRegDto> list1 = BatchParseRegeditCamCode(machineCode+"a",camCode1);
|
|
|
+ CamRegSDto list1 = BatchParseRegeditCamCode(machineCode,camCode1);
|
|
|
+ log.info("结束");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|