项目做license,分为两部部分:
一、一个小应用获取电脑的硬件信息(硬件的CPU的ID,和主板信息)生成唯一标识码
二、Java服务获取应用信息,生成唯一标识码,其他地方调用。
得到的字符串利用DES对其进行加密

.exe应用利用python写一个简单的获取脚本:
ComputerUniqueCode.py

import wmi
import json
from pyDes import *
import base64class ComputerUniqueCode:def __init__(self):self.Des_Key = "DESCRYPT"  # Keyself.Des_IV = "\x15\1\x2a\3\1\x23\2\0"  # 自定IV向量global ss = wmi.WMI()# 1. 获取硬件信息,输出 macode#   1.CPU序列号(ID) 2.本地连接 无线局域网 以太网的MAC 3.硬盘序列号(唯一) 4.主板序列号(唯一)# cpu 序列号def get_CPU_info(self):cpu = []cp = s.Win32_Processor()for u in cp:cpu.append({"Name": u.Name,"Serial Number": u.ProcessorId,"CoreNum": u.NumberOfCores})return cpu# 主板序列号def get_mainboard_info(self):mainboard = []for board_id in s.Win32_BaseBoard():mainboard.append(board_id.SerialNumber.strip().strip('.'))return mainboard#  由于机器码太长,故选取机器码字符串部分字符#  E0:DB:55:B5:9C:16BFEBFBFF00040651W3P0VKEL6W8T1Z1.CN762063BN00A8def getCombinNumber(self):b = self.get_CPU_info()d = self.get_mainboard_info()machinecode_str = ""if len(b) != 0:machinecode_str = machinecode_str + b[0]['Serial Number']if len(d) != 0:machinecode_str = machinecode_str + d[0]return machinecode_str# DES+base64加密def Encrypted(self, tr):k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5)EncryptStr = k.encrypt(tr)# EncryptStr = binascii.unhexlify(k.encrypt(str))###  print('注册码:',base64.b64encode(EncryptStr))return base64.b64encode(EncryptStr)  # 转base64编码返回# #des+base64解码def DesDecrypt(self, tr):k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5)DecryptStr = k.decrypt(base64.b64decode(tr))return DecryptStr  # 转base64解码返回# 获取mcodedef get_mcode(self):mcode = self.getCombinNumber()if mcode != "" and mcode is not None:return self.Encrypted(mcode)else:return "未获取计算机唯一码"

界面:ComputerUnique.py

import tkinter as tkfrom ComputerUniqueCode import ComputerUniqueCodewindow = tk.Tk()
# 设置窗口的标题
window.title("电脑唯一码")
# 设置不可放大缩小
window.resizable(0, 0)
# 设置窗口得到位置
# 得到屏幕宽度
sw = window.winfo_screenwidth()
# 得到屏幕高度
sh = window.winfo_screenheight()# 得到屏幕高度
ww = 500
wh = 250x = (sw - ww) / 2
y = (sh - wh) / 2
window.geometry("%dx%d+%d+%d" % (ww, wh, x, y))
# 设置窗口大小
window.maxsize(ww, wh)
window.minsize(ww, wh)# 设置结果显示文本
result_data_Text = tk.Text(window, width=70, height=12)  # 标签长宽
# 在窗口中放置结果显示文本
result_data_Text.pack()# 获取按钮点击事件
def hit_me():cuc = ComputerUniqueCode()result_data_Text.insert(1.0, cuc.get_mcode())# 点击按钮
b = tk.Button(window,text='获取',  # 显示在按钮上的文字width=15, height=2,command=hit_me, activeforeground='white',activebackground='red')  # 点击按钮式执行的命令# 在窗口中放置按钮
b.pack(side=tk.RIGHT, padx=10, pady=10)
# 进入消息循环
window.mainloop()

打包用pyinstall,打包的时候注意python版本与os的版本的兼容性。
Java服务主要代码:

public static void main(String[] args) throws Exception {SystemInfo si = new SystemInfo();HardwareAbstractionLayer hal = si.getHardware();String mainboardid = hal.getComputerSystem().getBaseboard().getSerialNumber();String cpuid = hal.getProcessor().getProcessorIdentifier().getProcessorID();String mcode = cpuid + mainboardid;String Des_Key = "DESCRYPT";byte[] Des_IV = new byte[]{(byte) 0x15, (byte) 0x1, (byte) 0x2a, (byte) 0x3, (byte) 0x1, (byte) 0x23, (byte) 0x2, (byte) 0x0};DES des = new DES(Mode.CBC, Padding.PKCS5Padding, Des_Key.getBytes(), Des_IV);String e_mcode = StrUtil.str(Base64.getEncoder().encode(des.encrypt(mcode)), CharsetUtil.CHARSET_GBK);System.out.println(e_mcode);}

pom.xml

    <dependencies><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.9.0</version></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId><version>5.9.0</version></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-core</artifactId><version>5.8.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.32</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.15</version></dependency></dependencies>

Java获取电脑硬件信息做license相关推荐

  1. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

  2. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号

    C#获取电脑硬件信息(CPU ID.主板ID.硬盘ID.BIOS编号 http://www.cnblogs.com/liufei88866/archive/2010/05/11/1732671.htm ...

  3. 通过注册表获取电脑硬件信息

    通过注册表获取电脑硬件信息 可以获取的硬件信息:设备型号,设备厂商,设备SN号:电脑背面条形码下面,cpu型号,操作系统名称. 下面是获取sn号的代码示例: std::string GetSystem ...

  4. Python获取电脑硬件信息及状态的实现方法

    From: http://www.jb51.net/article/54470.htm 这篇文章主要介绍了Python获取电脑硬件信息及状态的实现方法,是一个很实用的技巧,需要的朋友可以参考下 本文以 ...

  5. c# 获取电脑硬件信息通用查询类[测试通过]

    C#获取电脑硬件信息通用类[Computer]代码展示和分析,简介如下: 1.项目中添加System.Management引用. 2.添加类Computer,把下面代码全选,复制,粘贴. 3.使用方法 ...

  6. js怎么获取电脑硬件信息

    转载自品略图书馆 http://www.pinlue.com/article/2020/07/1708/2211037430301.html 想知道怎么获取电脑的硬件信息吗,下面是小编带来js怎么获取 ...

  7. c#中如何获取电脑硬件信息?山寨一个鲁大师

    最近Boss提了个需求,要收集下公司的电脑信息,配置比较低的淘汰掉.本来想用腾讯的电脑管家里的[硬件检测]工具,但也有些麻烦.它虽然可以将信息导出成txt文件,但录制作一张Excel表格就显得麻烦了, ...

  8. java获取客户端硬件信息_java如何获取远程计算机的系统信息,cpu使用情况,磁盘使用情况等等...

    展开全部 1.在远程server里搭建一个http服务e69da5e6ba903231313335323631343130323136353331333337396165,并支持某种服务端语言(如.n ...

  9. python绑定电脑机器码_获取电脑硬件信息可破VMP SE WinLicense绑定机器码

    写到文件 (取运行目录 () + "\硬件信息.txt", 到字节集 (编辑框1.内容)) 置剪辑板文本 (编辑框1.内容) 信息框 ("已经复制硬件信息,目录也生成一个 ...

最新文章

  1. (转)eclipse 代码自动补全
  2. sql server密码过期,通过SSMS修改策略报错
  3. python django框架 比php_ThinkPHP, Django这两个框架孰优孰略,忽略语言本身?
  4. 20170804 - 今日技能封装 - Q
  5. 使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...
  6. js-document对象
  7. Bootstrap创建拼接式按钮下拉菜单
  8. S3C2440PWM 定时器
  9. 小程序快速入门:wxss的使用
  10. 1秒等于1000毫秒, 1毫秒等于1000微秒,1微秒等于1000纳秒
  11. Java之自动装箱与自动拆箱
  12. Mysql---查询进阶(二)
  13. 1-SII--SharedPreferences完美封装
  14. opencv颜色识别思路
  15. saoml流控开心版补丁
  16. Matlab中向图中添加文本
  17. 未来科幻计算机,AE模板:500组科幻未来高科技UI界面人体计算机数据图表元素...
  18. Linux命令行与shell脚本编程之笔记(3)
  19. (转载)uefi启动解析:由原理到实例
  20. mvc4文件上传由于文件太大而无法正常获取文件

热门文章

  1. Mac窗口管理软件合集|告别混乱屏幕,一切井井有条。
  2. 随身wifi与宽带的区别是什么?
  3. 致物联网网关工程师:别浪费钱了来看看高度集成物联网无线AP模块应用的WiFi模组——模小块的成长记
  4. Java获取zip文件流
  5. 08-egg服务端发送请求
  6. 计算机辅助教学是人工智能应用,人工智能技术在计算机辅助教学中的应用与实现...
  7. stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出
  8. dell游匣笔记本安装win10和Ubuntu双系统详解(英伟达显卡)
  9. 包络检波仿真matlab,包络检波和相干解调仿真程序.doc
  10. 服务器性能测试--super PI 测试