diff --git a/youchain-system/src/main/java/com/youchain/AppRun.java b/youchain-system/src/main/java/com/youchain/AppRun.java index e2e9610..b26dc2f 100644 --- a/youchain-system/src/main/java/com/youchain/AppRun.java +++ b/youchain-system/src/main/java/com/youchain/AppRun.java @@ -60,6 +60,12 @@ public class AppRun { springApplication.run(args); log.error(JSONUtil.toJsonStr(LicenseValidate.getDeviceInfo())); + try{ + log.error(JSONUtil.toJsonStr(LicenseValidate.getLicense("2024-05-26"))); + }catch (Exception e){ + + } + } diff --git a/youchain-system/src/main/java/com/youchain/modules/license/LicenseValidate.java b/youchain-system/src/main/java/com/youchain/modules/license/LicenseValidate.java index cd680d1..244a722 100644 --- a/youchain-system/src/main/java/com/youchain/modules/license/LicenseValidate.java +++ b/youchain-system/src/main/java/com/youchain/modules/license/LicenseValidate.java @@ -3,6 +3,7 @@ package com.youchain.modules.license; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.file.FileReader; import cn.hutool.core.io.file.FileWriter; +import cn.hutool.json.JSON; import cn.hutool.json.JSONUtil; import com.youchain.config.FileProperties; import com.youchain.config.RsaProperties; @@ -11,6 +12,7 @@ import com.youchain.modules.license.domain.LicenseCheck; import com.youchain.utils.RsaUtils; import com.youchain.utils.SpringContextHolder; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; import java.util.Arrays; import java.util.Date; @@ -81,6 +83,70 @@ public class LicenseValidate { } + + public static String getLicense(String time) throws Exception{ + LicenseCheck licenseCheck=getDeviceInfo(); + licenseCheck.setEndTime(time); + String rest= JSONUtil.toJsonStr(licenseCheck).trim(); + String priKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFlDBnrKTnnAbXTCfUh3fhq81dXZUd/i0czbNGiWR9s4ocNEKK/fbMx8Qsghb3UK3MH7Vf+7X7cIOXaEO5g+mGou6RPKn/WsqgtGhVida7ZOLYv7q2LBkxzkB/KUCmidED+1Jre22T7kN5to84iT2JRMyYOkxHdIHAcYVpxTqpYJHWYrGI6Tvw4v2cL+vbhfN++ZaO9xtezsh/0Xk0PZVL17lZ46/rIwW5dKH9XmpkCTINsRXvpO2jbWcu40UtQPeI1xRh7KuezwP1QAh0O2nixS8gAMGdaVW1c237rxrwGeVim2+lb2bQwIlmWYjPEBBjhGukedcXb3JAH0C4/CPPAgMBAAECggEBAKKGsgK2W7hB+saj2KfU/+JdRsOktYNEkKt+8hf18PoN9HAa9RoMqzXspgzOvkGW1kBxXOulzR8WgMjNddhnEHQ2FvTV6Ckr8D6d6K1kg4UHCiuuG9K7F8aGmTuBHbNg7tTNqhDMKWlkt5CpgcrJ6hq+w2X9nr2wswMw3sQQ/55PZLzgwzv6WQtkJ58w78r9fZJsOgjldwE35nliDo8Xwoa1YCVcEjfH+sgPfFJzilFtJ9wjmx/HZb2EBcUUSaW5ewsqvN9dk1EgAJjmwWVW84NUkrbXD0nhUTx4MHfx4MA1fqPjkwkHCrEBA5idsQkwtoIETg1hN+QUR9iBLhelJIECgYEA83CRN6Zu0RpsP4JPuov06qRM3dV+ErjjApfENJzLk7DW4GlkgNRG9pWv6xJxlEbxf7k+M5jMEGrfE6o8xuBYoEm2BHy8WZF0zPeVnyOrk28xoDUKlsbT2lFYvVbHWBDj4dbu/WoqH2r3bWedVSr+QgpGLuHn//3a3bwplqvzAW8CgYEAz8XgXgtnckQRDNFhUDmS/QVdthaiYERerEk+qem1o2/7IEBSF7xxu+yRm5DTJumD4kQiilcQJngmrQ23HDZO4S61lyCBv0lx8y0A2sAHt9v63Dz7P270tMs1tJW8iSC7VUNtMwFMdc+MjTlHq99mg5USgusM+fB8FkEmkpRDE6ECgYBTqpB+S9kyTJ5/hU3Zk1htfGJeq41U6e47aeWpH2poLBLttcsw68Qn43I+nGwkxe0iNIxIN2+LBO/+VjflMh3DmRHRoP0q228FMuJde2jwlvq7UP9+qn8NPX/+MuD4R3XKnJAu0FoBykWXeFD+gHQ6RkWwvzt5I8ohAxZYDmjKSQKBgB5gwhM9+5v7U7raCi5enJ0d4buzx33nwSfTdbQGFaaVwtPOU7JgvQhK6GckX5r63WuBpsMvQ488VftLXBBl6FaIK8iy2gWLyXtSgyN4nChHo3/78ogtwt2EMI/8rJooDPvEZfzlHbbD57rmOxJoEWb/rrsxfq40eRAP6oHX547BAoGBAMK7GGdYkzxkD2xuMZSfPro/sO0EbghJdJ/l8nioTEPTPyRx5AZBe/7OhiKYohpUdi5F8+S18ACn88rJkZn7iQGuJvjXCFYnt9bec+w8lqiUcjfw3l4+aAkNTfquIdKz6gJyUBVjbuQYYkzGf052HbMacDwwfbHIlDvpfAS7FUpq"; + + String result=RsaUtils.encryptByPrivateKey(priKey,rest); + //读取本地文件 + + log.error("------------------------加密完成-----------------------"); + + log.error(result); + String rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,result); + + log.error(rsaResult); + log.error("------------------------解密完成-----------------------"); + LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class); + LicenseCheck system_price = getDeviceInfo(); + + boolean isEQ_ipAddress=Arrays.equals(key_price.getIpAddress().toArray(),system_price.getIpAddress().toArray()); + if(isEQ_ipAddress){ + log.error("IP匹配成功"); + }else{ + log.error("IP匹配失败"); + throw new BadRequestException("IP匹配失败"); + } + + boolean isEQ_macAddress=Arrays.equals(key_price.getMacAddress().toArray(),system_price.getMacAddress().toArray()); + if(isEQ_macAddress){ + log.error("MAC匹配成功"); + }else{ + log.error("MAC匹配失败"); + throw new BadRequestException("MAC匹配失败"); + } + if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){ + log.error("主板匹配成功"); + }else{ + log.error("主板匹配失败"); + throw new BadRequestException("主板匹配失败"); + } + if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){ + log.error("CPU匹配成功"); + }else{ + log.error("CPU匹配失败"); + throw new BadRequestException("CPU匹配失败"); + } + + try{ + Date end_date = DateUtil.parse(key_price.getEndTime()); + Date now_date = DateUtil.date(); + + if(end_date.before(now_date)){ + throw new BadRequestException("过期的License,请重新生成"); + }else{ + log.error("有效期验证通过"); + } + }catch (Exception e){ + throw new BadRequestException("无效的License,请重新生成"); + } + return null; + } + + public static void saveCode(String license_code) throws Exception{ //读取本地文件 log.error(license_code);