java根据系统参数生成每个计算机的唯一标识。

1. 获取CPU序列号

 /**
* 获取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;
}

2.获取 硬盘序列号

 /**
* 获取 硬盘序列号(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("获取硬盘序列号失败");
}
}

3. bois版本号(linux)

/**
* bois版本号(linux)
*
* @return
*/
public static String getBoisVersion() {
String result = "";
Process p;
try {
// 管道
p = Runtime.getRuntime().exec("sudo dmidecode -s bios-version");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
result += line;
break;
}
br.close();
} catch (IOException e) {
System.out.println("获取主板信息错误");
}
return result;
}

4. 获取系统序列号(linux)

/**
* 获取系统序列号(linux)
*
* @return
*/
public static String getUUID() {
String result = "";
try {
Process process = Runtime.getRuntime().exec("sudo dmidecode -s system-uuid");
InputStream in;
BufferedReader br;
in = process.getInputStream();
br = new BufferedReader(new InputStreamReader(in));
while (in.read() != -1) {
result = br.readLine();
}
br.close();
in.close();
process.destroy();
System.out.println("获取序列号:"+result);
} catch (Throwable e) {
e.printStackTrace();
}
return result;
}

5.字符串分割

    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();
}

6. 获取window or linux机器码

 /**
* 获取window or linux机器码
* @return
*/
public static String getWindowNumber(String type){
if (Objects.isNull(type)){
return "";
}
Map<String,Object> codeMap=new HashMap<>(2);
String result = "";
if ("linux".equals(type)){
String boisVersion = getBoisVersion();
codeMap.put("boisVersion",boisVersion);
System.out.println("boisVersion:" + boisVersion);
String uuid = getUUID();
codeMap.put("uuid",uuid);
System.out.println("uuid:" + uuid);
String codeMapStr = JSON.toJSONString(codeMap);
String serials = MD5Util.saltingMD5(codeMapStr, SALT);
result= getSplitString(serials, "-", 4);
}else if ("window".equals(type)){
String processorId = getCPUSerialNumber();
codeMap.put("ProcessorId",processorId);
System.out.println("ProcessorId:" + processorId);
String serialNumber = getHardDiskSerialNumber();
codeMap.put("SerialNumber",serialNumber);
System.out.println("SerialNumber:" + serialNumber);
String codeMapStr = JSON.toJSONString(codeMap);
String serials = MD5Util.saltingMD5(codeMapStr, SALT);
result= getSplitString(serials, "-", 4);
}else { }
return result;
}

7.生成机器码

/**
* 机器码:A45DF6C62F6568B6E0039653EF7FF55F
* @param args
*/
public static void main(String[] args) throws IOException {
String windowNumber = getWindowNumber("window");
System.out.println("机器码:" + windowNumber);
}

java生成机器码的更多相关文章

  1. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  2. 利用JAVA生成二维码

    本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...

  3. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

  4. JAVA生成条形码

    1.下载生成条形码所需要的jar包barcode4j.jar: 2.java生成条形码代码 import java.awt.image.BufferedImage;import java.io.Fil ...

  5. Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  6. java 生成8位数字作为UID

    java 生成8位数字作为UUID: /*** * 生成uid 8位数字 */public static String generateUID(){ Random random = new Rando ...

  7. java生成随机序列号

    1.java生成随机序列号 String deleteUuid = UUID.randomUUID().toString(); 引用Jar包 //java-uuid-generator-3.1.3.j ...

  8. java生成简单Excel工作薄

    前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jx ...

  9. 【转】Java生成对应字符串的MD5密码模块

    原文网址:http://www.cnblogs.com/xudong-bupt/archive/2013/05/10/3070899.html (1)一般使用的数据库中都会保存用户名和密码,其中密码不 ...

  10. Java生成文件

    Java生成文件 1.说明 以文件路径作为參数,推断该文件是否存在,若不存在就创建文件.并输出文件路径 2.实现源代码 /** * @Title:BuildFile.java * @Package:c ...

随机推荐

  1. oneDNN

    目录 oneDNN卷积思路 debug捆绑套路 jit_avx2_convolution_fwd_t::execute_forward( 整个文件oneDNN/src/cpu/x64/jit_avx2 ...

  2. MySQL 分组排序,取第一条

    select t1.* from coal_installed_capacity t1where NOT EXISTS (select * from coal_installed_capacity t ...

  3. unidbgrid默认列排序

    UniDBGrid -> ClientEvents -> ExtEvents ->... function reconfigure(sender, store, columns, o ...

  4. 实验九 团队作业6:团队项目编码与Alpha冲刺

    项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验九-团队作业6 团队名称 零基础619 团队成员分工描述 任务1:荣娟,鑫任务2:亚楠,桂婷任务3:亚楠,桂婷任务4:荣娟,鑫任务 ...

  5. windos 环境下载安装seata

    参考: https://blog.csdn.net/lianghecai52171314/article/details/127330916

  6. 关于python print函数format 格式化

    关于python print函数format 格式化  Your Guide to the Python print() Function https://realpython.com/python- ...

  7. 使用vite创建vue3 遇到 process is not defined

    今天新建项目遇到报错,查资料得出,需要在vite.config.js中添加代码如下 import { defineConfig } from 'vite' import vue from '@vite ...

  8. mac git远程仓库错误解决方法

    mac更新后不知道怎么回事,git时出现了 Permission denied (publickey). 经查询后得出原因 1.首先给git进行config的配置 git config --globa ...

  9. 理解Map-构建关联数组

    理解Map 要更深入理解map,学习如何构建关联数组是很有帮助的,以下是简单实现 package org.example.onjava.senior.example03collection.map; ...

  10. 【建造者设计模式详解】Java/JS/Go/Python/TS不同语言实现

    简介 建造者模式(Builder Pattern),也叫生成器模式,属于创建型模式.它使用多个简单的对象一步一步构建成一个复杂的对象.它允许你使用相同的创建代码生成不同类型和形式的对象. 当你希望使用 ...