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. STM32F103使用FSMC对接正点原子3.5寸TFTLCD屏幕

    fsmc的使用算是32里面有点绕的一个知识点,但是想明白了其实也没啥了. 首先我先放32个0在这儿: 0000  0000  0000  0000  0000  0000  0000  0000 [3 ...

  2. SQL Server链接数据库

    有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个s ...

  3. centos7中Firefox安装Flash插件

    第一步:先下载好Flash插件安装包,可以到Adobe官网下载.因为是linux 64位系统,所以要下个匹配的,我下载的是flash_player_npapi_linux.x86_64.tar.gz, ...

  4. windows环境下本地项目(或gitlab上拉取项目)在Jenkins上自动打包部署 超超超详细!!!!!

    一.环境准备 1.下载jdk,官网:http://www.oracle.com/ 2.下载Jenkins,官网:https://www.jenkins.io/ 3.下载Tomcat,官网:http:/ ...

  5. K8S—dashboard ui部署

    一.Dashboard UI概述 仪表板是基于Web的Kubernetes用户界面.您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随 ...

  6. Use `tensor.item()` in Python or `tensor.item<T>()` in C++ to convert a 0-dim tensor to a number

    IndexError: invalid index of a 0-dim tensor. Use `tensor.item()` in Python or `tensor.item<T>( ...

  7. 读取远程服务器linux指定目录下文本内容(工具类)

    package com.aa.dataadmin.common.utils; import cn.hutool.extra.ssh.JschUtil; import com.jcraft.jsch.C ...

  8. mysql统计特定字符串出现次数

    其中'test'为原始字符串,'t'为特定字符串   SELECT floor((char_length('test') - char_length(replace('test', 't', '')) ...

  9. 无法下载外网Docker镜像的解决方案

    概述 在安装k8s相关组件时经常会遇到需要下载一些外网的Docker镜像仓库,比如k8s的一个NFS存储类k8s.gcr.io/sig-storage/nfs-subdir-external-prov ...

  10. 分布式CAP_BASE博客参考

    https://blog.csdn.net/lixinkuan328/article/details/95535691 CAP 一致性(Consistency) 可用性(Availability) 分 ...