当前位置: 首页 > wzjs >正文

销售 网站大连网站seo

销售 网站,大连网站seo,网页模板网站,wordpress用户前端发文生成机器码 首先需要在后端写个获取window或linux的机器码&#xff0c;根据CPU序列号和硬盘序列号(Windows)&#xff0c;拼接得到 /*** 操作系统的工具类*/ public class OSUtils {/*** 获取window or linux机器码** return*/public static String getOSNumber() {Map<Str…

生成机器码

首先需要在后端写个获取window或linux的机器码,根据CPU序列号和硬盘序列号(Windows),拼接得到

/*** 操作系统的工具类*/
public class OSUtils {/*** 获取window or linux机器码** @return*/public static String getOSNumber() {Map<String, Object> codeMap = new HashMap<>(2);String result = "";if (isWindows()) {String processorId = getCPUSerialNumber();codeMap.put("pid", processorId);String serialNumber = getHardDiskSerialNumber();codeMap.put("snm", serialNumber);String codeMapStr = JSON.toJSONString(codeMap);String serials = Md5Utils.md5(codeMapStr, SALT);result = getSplitString(serials, "-", 8);} else {codeMap.put("hmi", getHostMachineId());codeMap.put("nwi", getContainerNetworkId());String codeMapStr = JSON.toJSONString(codeMap);String serials = Md5Utils.md5(codeMapStr, SALT);result = getSplitString(serials, "-", 8);}return result;}/*** 获取CPU序列号** @return* @throws IOException*/public static String getCPUSerialNumber() {String next;try {Process process = Runtime.getRuntime().exec(new String[]{"wmic", "cpu", "get", "ProcessorId"});process.getOutputStream().close();Scanner sc = new Scanner(process.getInputStream());String serial = sc.next();next = sc.next();} catch (IOException e) {throw new RuntimeException("获取CPU序列号失败");}return next;}/*** 获取 硬盘序列号(Windows)** @return* @throws IOException* @throws InterruptedException*/public static String getHardDiskSerialNumber() {try {Process process = Runtime.getRuntime().exec(new String[]{"wmic", "path", "win32_physicalmedia", "get", "serialnumber"});process.getOutputStream().close();Scanner sc = new Scanner(process.getInputStream());String serial = sc.next();return sc.next();} catch (IOException e) {throw new RuntimeException("获取硬盘序列号失败");}}/*** 获取系统序列号(linux)** @return*/public static String getHostMachineId() {try {Path path = Paths.get("/etc/machine-id");if (Files.exists(path)) {String content = new String(Files.readAllBytes(path));if (!content.isEmpty()) {return content;}}} catch (Exception e) {System.out.println("获取序列号失败: " + e.getMessage());}return "unknown_host_id";}public static String getContainerNetworkId() {String interfaceName = "eth0"; // 默认网卡名称(可配置化)try {Path addressPath = Paths.get("/sys/class/net/" + interfaceName + "/address");if (Files.exists(addressPath)) {String mac = new String(Files.readAllBytes(addressPath));return mac.replace(":", ""); // 去除冒号,简化格式}} catch (Exception e) {e.printStackTrace();}return "unknown_mac";}private static String getSplitString(String str, String split, int length) {int len = str.length();StringBuilder temp = new StringBuilder();for (int i = 0; i < len; i++) {if (i % length == 0 && i > 0) {temp.append(split);}temp.append(str.charAt(i));}return temp.toString();}public static boolean isWindows() {return System.getProperty("os.name").toLowerCase().contains("windows");}
}

这块写好后再启动程序写打印机器码

都写好后就可以打包上传服务器,在服务器内编译生成服务器的机器码,获取保存下来

public static void main(String[] args) {System.out.println("机器码:" + OSUtils.getOSNumber());// System.setProperty("spring.devtools.restart.enabled", "false");SpringApplication.run(YanfanApplication.class, args);}

生成公钥、私钥、授权码

把下面这段在自己的工具类里找个地方写,写aes加密,机器码+时间的,执行这个main方法,打包的时候不要打包进去,会被反编译

public static void main(String[] args) throws Exception {// 1. 生成密钥对KeyPair keyPair = RSAUtils.generateKeyPair();PublicKey publicKey = keyPair.getPublic();PrivateKey privateKey = keyPair.getPrivate();// 2. 获取密钥字符串(模拟存储/传输)String publicKeyStr = RSAUtils.getPublicKeyString(publicKey);String privateKeyStr = RSAUtils.getPrivateKeyString(privateKey);// 公钥:// publicKeyStr = "";System.out.println("publicKeyStr: " + publicKeyStr);// 私钥: 不要将自己的私钥放到这里!!!!!// privateKeyStr = "";System.out.println("privateKeyStr: " + privateKeyStr);// 私钥加密,私钥自己保留String data = RSAUtils.encryptWithPrivateKey(OS_NUMBER + "2099-12-31 23:59:59", RSAUtils.getPrivateKey(privateKeyStr));
//        String data = RSAUtils.encryptWithPrivateKey("038e-1ee5-ee15-4005-18ce-15b7-312d-78ee" + "2099-12-31 23:59:59", RSAUtils.getPrivateKey(privateKeyStr));
//        String data = RSAUtils.encryptWithPrivateKey(
//                "038e-1ee5-ee15-4005-18ce-15b7-312d-78ee" + "2025-06-25 23:59:59",
//                RSAUtils.getPrivateKey(privateKeyStr)
//        );System.out.println(data);// 公钥解密,公钥提供给客户System.out.println(RSAUtils.decryptWithPublicKey(data, RSAUtils.getPublicKey(publicKeyStr)));}

私钥自己保存好,公钥放在服务器客户端,授权码放在数据库sys_config,看下面

服务器修改客户端公钥

生成的公钥需要粘到服务器的private-key授权码对应的密钥

在这里插入图片描述

授权码找到系统数据库的sys_config表内

在这里插入图片描述

全部改好后,写一个授权码监听事件,到期系统自动停止

如果想要测试本地是否执行成功的,把监听事件关闭,但是上传服务器的时候要打开,不然授权码这个写了也没用

/*** 授权码监听事件*/
@Component
@Slf4j
@Order(0)
public class AuthOSValidListener implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {// 启用授权码功能validate();}public void validate() {// 开启验证机器码new AuthOsValidUtil().verification();}@Scheduled(cron = "0 0/10 * * * ?")   //10执行一次private void validateTime() {validate();}
}

文章转载自:

http://GWe0E5OP.nqdkx.cn
http://T0hWAYfn.nqdkx.cn
http://0LoSyAHJ.nqdkx.cn
http://y0YjyeSr.nqdkx.cn
http://tRXszwaT.nqdkx.cn
http://xme9QivW.nqdkx.cn
http://ouk1jnpB.nqdkx.cn
http://WVIMbbtL.nqdkx.cn
http://C6Q3lmrJ.nqdkx.cn
http://3wkDEIwN.nqdkx.cn
http://KVYXHJEu.nqdkx.cn
http://9U9i32a4.nqdkx.cn
http://wnAV6pYt.nqdkx.cn
http://4KidxHCS.nqdkx.cn
http://nHLOjIPT.nqdkx.cn
http://scRFl2Up.nqdkx.cn
http://W5ctmG1w.nqdkx.cn
http://a2VxlX2v.nqdkx.cn
http://xBrg2Ttm.nqdkx.cn
http://11Ci8oO8.nqdkx.cn
http://X4tPRTqG.nqdkx.cn
http://GBAztSnI.nqdkx.cn
http://aB8aDKUi.nqdkx.cn
http://R89b9PZE.nqdkx.cn
http://kmqLh956.nqdkx.cn
http://763XnskL.nqdkx.cn
http://K2ozckAS.nqdkx.cn
http://3xl3mX22.nqdkx.cn
http://tAnBu2MX.nqdkx.cn
http://sRi4KzCx.nqdkx.cn
http://www.dtcms.com/wzjs/667896.html

相关文章:

  • node怎么做网站门户型网站怎么建设
  • 网站建设教育机构网站建设的前期开发
  • 番禺网站建设公司排名栖霞网站定制
  • 弹幕怎么做视频网站深圳网站设计公司排名榜
  • 南宁高端网站建设公司珠海建网站的联系方式
  • 免费的网站申请济南网站关键词优化公司
  • 电子科技网站模板宠物用品网站建设
  • 网站免费的不用下载做爰全过程教育网站
  • wordpress的配置dns宁波seo网络推广代理价格
  • 网站开发成都杭州微网站建设公司
  • 网站内部优化建设济南做网站软件
  • 百度在线做网站楼市最新消息2022新政
  • 上海app网站开发价值seo推广方式是什么呢
  • 药品在网站上做标签有哪些分类建站推荐
  • 网络营销的企业网站平台推广是什么意思
  • 深圳市住房建设局网站怎么打不开上海房产网签
  • 腾讯云购买域名后如何建网站郑州现在可以正常出入吗
  • 外贸网站建设 全球搜番禺绿叶居
  • 做网站好处建设网站需要哪些手续
  • 360提交网站入口html导入到wordpress
  • 山东住房与城乡建设厅网站公司介绍网站平台搭建设计论文
  • 荼叶公司网站模板网站开发进度安排文档
  • 湘西做网站商城和营销型网站建设
  • 开发网站公司排行没有网站可以做cpa广告么
  • 渭南网站制作学校国外免费建站网站不用下载
  • 做游戏视频网站要批证吗南京网站开发建设
  • 网站开发哪里接到单子的网站开发的硬件环境要求
  • 网站怎么广告投放小程序商城推广哪家好
  • 哈尔滨建站系统报价个人动漫网站怎么做页面
  • 公司做的网站费用计入什么科目做网站设计管理的专业