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.trim(), 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.trim(), true); log.info("相机注册码:{}",s); log.info("相机注册码原始长度:{}",s.length()); String code = DeflaterUtil.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.trim(), 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 = DeflaterUtil.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 = DeflaterUtil.unzipString(plaintext.trim()); 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.trim())){ 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 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 list1 = BatchParseRegeditCamCode(machineCode+"a",camCode1); CamRegSDto list1 = BatchParseRegeditCamCode(machineCode,camCode1); log.info("结束"); } }