RegCodeUtil.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.fdkankan.reg;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import com.fdkankan.reg.dto.CamRegDto;
  5. import com.fdkankan.reg.dto.CamRegSDto;
  6. import com.fdkankan.reg.dto.MachineRegDto;
  7. import lombok.extern.slf4j.Slf4j;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import cn.hutool.core.util.ObjUtil;
  11. /**
  12. * @author Xiewj
  13. * @date 2023/7/6
  14. */
  15. @Slf4j
  16. public class RegCodeUtil {
  17. /***
  18. * @description:生成安装码
  19. * @author: Xiewj
  20. * @date: 2023/7/6 15:01
  21. * @param: machineCode 机器码
  22. * @return:
  23. **/
  24. public static String GenRegeditCode(String machineCode){
  25. String s = Crypt.encryptAES(machineCode.trim(), true);
  26. log.info("安装注册码:{}",s);
  27. return s;
  28. }
  29. /***
  30. * @description:生成相机激活码
  31. * @author: Xiewj
  32. * @date: 2023/7/6 15:01
  33. * @param: plaintext 需要加密的字符串 [{"SN": "SN000001", "TOSN": "", "OPTION": "ADD"}]
  34. * @return:
  35. **/
  36. public static String GenRegeditCamCode(String plaintext){
  37. String s = Crypt.encryptAES(plaintext.trim(), true);
  38. log.info("相机注册码:{}",s);
  39. log.info("相机注册码原始长度:{}",s.length());
  40. String code = DeflaterUtil.zipString(s);
  41. log.info("相机注册码压缩:{}",code);
  42. log.info("相机注册码压缩长度:{}",code.length());
  43. return code;
  44. }
  45. /***
  46. * @description 获取激活数据
  47. * @author: Xiewj
  48. * @date: 2023/7/6 15:01
  49. * @param: plaintext 需要转换成对象的字符串
  50. * @return:
  51. **/
  52. public static MachineRegDto ParseMachineCode(String plaintext){
  53. try {
  54. String source = Crypt.decryptAES(plaintext.trim(), true);
  55. log.info("相机注册码解密:{}",source);
  56. MachineRegDto t = JSON.toJavaObject(JSONObject.parseObject(source) , MachineRegDto.class);
  57. return t;
  58. }catch (Exception e){
  59. e.printStackTrace();
  60. return null;
  61. }
  62. }
  63. // /***
  64. // * @description 获取激活数据
  65. // * @author: Xiewj
  66. // * @date: 2023/7/6 15:01
  67. // * @param: plaintext 需要转换成对象的字符串
  68. // * @return:
  69. // **/
  70. // public static CamRegDto ParseRegeditCamCode(String machineCode , String plaintext){
  71. // try {
  72. // //解压
  73. // String code = DeflaterUtil.unzipString(plaintext);
  74. // log.info("相机注册码解压:{}",code);
  75. // String source = Crypt.decryptAES(code, true);
  76. // log.info("相机注册码解密:{}",source);
  77. // CamRegDto t = JSON.toJavaObject(JSONObject.parseObject(source) , CamRegDto.class);
  78. // if (ObjUtil.isNull(t.getMachineCode()) && !t.getMachineCode().equals(machineCode)){
  79. // throw new RuntimeException("校验失败");
  80. // }
  81. // return t;
  82. // }catch (Exception e){
  83. // e.printStackTrace();
  84. // return null;
  85. // }
  86. // }
  87. /***
  88. * @description:生成相机激活码多个
  89. * @author: Xiewj
  90. * @date: 2023/7/6 15:01
  91. * @param: plaintext 需要加密的字符串 [{"SN": "SN000001", "TOSN": ""},{"SN": "SN000001", "TOSN": ""}]
  92. * @return:
  93. **/
  94. public static String batchGenRegeditCamCode( CamRegSDto dtos){
  95. String camCode = GenRegeditCamCode(JSONObject.toJSONString(dtos).toString());
  96. return camCode;
  97. }
  98. /***
  99. * @description 获取激活数据
  100. * @author: Xiewj
  101. * @date: 2023/7/6 15:01
  102. * @param: plaintext 需要转换成对象的字符串
  103. * @return:
  104. **/
  105. public static CamRegSDto BatchParseRegeditCamCode(String machineCode,String plaintext){
  106. try {
  107. //解压
  108. String code = DeflaterUtil.unzipString(plaintext.trim());
  109. log.info("批量生成相机码解压:{}",code);
  110. String source = Crypt.decryptAES(code, true);
  111. CamRegSDto t = JSON.toJavaObject(JSONObject.parseObject(source) , CamRegSDto.class);
  112. if (ObjUtil.isNull(t.getMachineCode()) && !t.getMachineCode().equals(machineCode.trim())){
  113. throw new RuntimeException("校验失败");
  114. }
  115. return t;
  116. }catch (Exception e){
  117. e.printStackTrace();
  118. return null;
  119. }
  120. }
  121. public static void main(String[] args) {
  122. //读取机器码
  123. MachineRegDto machineRegDto = ParseMachineCode("E4E73A8EB46B8EA252B9C1B34048F60679FB345BC6F233A8369E355828B68F69FDAB2150B286C0E0A397D960183716F8BF4C8B086D4C5BB5D1243CB9AA924B6B8A0ED22ED413BD27681CE5C36198EBF7FE06E75CD444B46A7721E2462DD234EB6B5B780F1FB9CF3C26C3ED4DB7B08B20");
  124. System.out.println(machineRegDto);
  125. String machineCode="E4E73A8EB46B8EA252B9C1B34048F60679FB345BC6F233A8369E355828B68F69FDAB2150B286C0E0A397D960183716F8BF4C8B086D4C5BB5D1243CB9AA924B6B8A0ED22ED413BD27681CE5C36198EBF7FE06E75CD444B46A7721E2462DD234EB6B5B780F1FB9CF3C26C3ED4DB7B08B20";
  126. //生成安装注册码
  127. String s = GenRegeditCode(machineCode);
  128. // CamRegDto camRegDto1=new CamRegDto();
  129. // camRegDto1.setSn("00000001");
  130. // camRegDto1.setMachineCode(machineCode);
  131. // //生成相机注册码
  132. // String camCode = GenRegeditCamCode( JSON.toJSONString(camRegDto1));
  133. // //校验相机注册码
  134. // CamRegDto camRegDto3 = ParseRegeditCamCode(machineCode,camCode);
  135. List<CamRegDto> list=new ArrayList<>();
  136. CamRegDto camRegDto=new CamRegDto();
  137. camRegDto.setSn("00000001");
  138. list.add(camRegDto);
  139. CamRegDto camRegDto2=new CamRegDto();
  140. camRegDto2.setSn("00000001");
  141. list.add(camRegDto2);
  142. CamRegSDto CamReg=new CamRegSDto();
  143. CamReg.setMachineCode(machineCode);
  144. CamReg.setCamRegs(list);
  145. String camCode1 = batchGenRegeditCamCode( CamReg);
  146. // List<CamRegDto> list1 = BatchParseRegeditCamCode(machineCode+"a",camCode1);
  147. CamRegSDto list1 = BatchParseRegeditCamCode(machineCode,camCode1);
  148. log.info("结束");
  149. }
  150. }