java獲取mac和機器碼,註冊碼的實現、CPU序列號
CPU序列號:
- package test;
- import java.io.IOException;
- import java.util.Scanner;
- publicclass CPUTest {
- /**
- * @param args
- * @throws IOException
- */
- publicstaticvoid main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- long start = System.currentTimeMillis();
- Process process = Runtime.getRuntime().exec(
- new String[] { "wmic", "cpu", "get", "ProcessorId" });
- process.getOutputStream().close();
- Scanner sc = new Scanner(process.getInputStream());
- String property = sc.next();
- String serial = sc.next();
- System.out.println(property + ": " + serial);
- System.out.println("time:" + (System.currentTimeMillis() - start));
- }
- }
結果輸出是這樣的
其實就是用Runtime.getRuntime().exec 執行一個指令而已。。
想知道結果是否是準確的 , 可以在DOS下面測試 首先windows鍵+R鍵 開啟執行框 ,然後輸入cmd 開啟DOS 。然後輸入 wmic cpu get ProcessorId
這次的結果任然是
Runtime.getRuntime().exec 真的很強大啊,直接可以取得當前JVM的執行時環境,然後通過exec執行傳入的命令引數,Runtime.exec還可以做其他的事情,比如說直接開啟一個檔案。。不過在這裡我就不在做了,有興趣的小夥伴可以自己去試試看。。。
轉載自:https://blog.csdn.net/y353027520dx/article/details/42494721
package util;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
/**
* java獲取mac和機器碼,註冊碼的實現
*
*/
public class AuthorizationUtils {
private static final int SPLITLENGTH = 4;
private static final String SALT = "yunshouhu";
public static void main(String args[]) throws Exception {
String code = getMachineCode();
System.out.println("code:" + code);
String authCode = auth(code);
System.out.println("機器碼:" + code);
System.out.println("註冊碼:" + authCode);
// System.out.println("mac:"+getMac());
// System.out.println("mac2:"+getMac2());
}
private static String getMachineCode() {
Set<String> result = new HashSet<>();
String mac = getMac();
System.out.println("mac:" + getMac());
result.add(mac);
Properties props = System.getProperties();
String javaVersion = props.getProperty("java.version");
result.add(javaVersion);
// System.out.println("Java的執行環境版本: " + javaVersion);
String javaVMVersion = props.getProperty("java.vm.version");
result.add(javaVMVersion);
// System.out.println("Java的虛擬機器實現版本: " +
// props.getProperty("java.vm.version"));
String osVersion = props.getProperty("os.version");
result.add(osVersion);
// System.out.println("作業系統的版本: " + props.getProperty("os.version"));
String code = new Md5PasswordEncoder().encodePassword(
result.toString(), SALT);
return getSplitString(code, "-", 4);
}
// 使用hyperic-sigar獲取mac
private static String getMac2() throws SigarException {
Sigar sigar = new Sigar();
String[] ifaces = sigar.getNetInterfaceList();
for (String iface : ifaces) {
NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(iface);
if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())
|| (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0
|| NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {
continue;
}
String mac = cfg.getHwaddr();
return mac;
}
return null;
}
public static String auth(String machineCode) {
String newCode = "([email protected])["
+ machineCode.toUpperCase() + "](xxx應用級產品開發平臺)";
String code = new Md5PasswordEncoder().encodePassword(newCode, SALT)
.toUpperCase() + machineCode.length();
return getSplitString(code);
}
private static String getSplitString(String str) {
return getSplitString(str, "-", SPLITLENGTH);
}
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));
}
String[] attrs = temp.toString().split(split);
StringBuilder finalMachineCode = new StringBuilder();
for (String attr : attrs) {
if (attr.length() == length) {
finalMachineCode.append(attr).append(split);
}
}
String result = finalMachineCode.toString().substring(0,
finalMachineCode.toString().length() - 1);
return result;
}
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
// 00-24-7E-0A-22-93
private static String getMac() {
try {
Enumeration<NetworkInterface> el = NetworkInterface
.getNetworkInterfaces();
while (el.hasMoreElements()) {
byte[] mac = el.nextElement().getHardwareAddress();
if (mac == null)
continue;
String hexstr = bytesToHexString(mac);
return getSplitString(hexstr, "-", 2).toUpperCase();
}
} catch (Exception exception) {
exception.printStackTrace();
}
return null;
}
}
轉自:https://blog.csdn.net/earbao/article/details/41484691
相關推薦
java獲取mac和機器碼,註冊碼的實現、CPU序列號
CPU序列號:package test; import java.io.IOException; import java.util.Scanner; publicclass CPUTest { /** * @param args * @th
Java 獲取IP和機器名
1. 通過IP獲取機器名 or 通過機器名獲取ip host :主機 hostAddress :ip hostName:機器名 import java.net.InetAddress; import java.net.UnknownHost
c#中如何獲取本機MAC地址、IP地址、硬盤ID、CPU序列號等系統信息
finall ipaddress reac 地址 computer mod urn aca rop public class Computer { public static string CpuID; //1.cpu序列號 pub
C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)
mic class network pcm .cn bbb alt OS -h 原文:C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)在開發過程中,經常需要獲取電腦的一些屬性,如獲取硬盤ID/CPU序列號/MAC地址作為來加密字符串
使用IPMi獲取伺服器的硬體資訊,如風扇轉速、cpu等
開啟IPMI模組 IPMI是伺服器的智慧化管理平臺介面,我們要通過這個介面獲取所有的硬體資訊以及控制伺服器開關機。 使用IPMI的前提是伺服器支援IPMI即帶有BMC的硬體模組,將網線接到BMC模組就可以使用了(具體找運維....)。 IPMI模組配置好以後在瀏覽器中輸
c#中如何獲取本機MAC地址、IP地址、硬碟ID、CPU序列號等系統資訊
我們在利用C#開發桌面程式(Winform)程式的時候,經常需要獲取一些跟系統相關的資訊,例如使用者名稱、MAC地址、IP地址、硬碟ID、CPU序列號、系統名稱、實體記憶體等。 首先需要引入名稱空間: using System.Management;
純java獲取CPU序列號,生成機器碼
用於生成機器碼感覺用mac不靠譜,因為mac能改,(除CPU序列號外,還可以獲得主機板序列號。)Java程式碼 public static void main(String[] args) { // TODO Auto-generated method stub
Python下的資料處理和機器學習,對資料線上及本地獲取、解析、預處理和訓練、預測、交叉驗證、視覺化
<!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv=
Xshell5 註冊碼 ,Xftp5 註冊碼,Xmanager5註冊碼
strong xftp5 str manage bsp shell xshell5 ftp manager Xshell 5 註冊碼: 690313-111999-999313Xftp 5 註冊碼:101210-450789-147200 Xmanager 5 註冊碼:10
java 獲取request和response的一種方法
requestjava獲取request和response:HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();//獲取res
原碼,反碼,補碼,及Java中數字表示方法
進行 負數 java ava 一位 進制 數字 反碼 二進制 原碼:原碼是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 如:如果是八位二進制1即用00000001表示,-1即用10000001表示。 反碼:正數的反碼就是其本身,負數的反碼是在其原碼的基礎上
EasyRecovery for mac 13破解版 附註冊碼 – Mac資料恢復軟體
EasyRecovery for mac是由Kroll Ontrack出品的一款操作安全、價效比高、使用者自主操作的資料恢復軟體。支援從各式的儲存介質恢復刪除或者丟失的檔案,能夠恢復硬碟資料、Mac資料、U盤資料、行動硬碟資料、相機資料、手機資料、光碟資料、電子郵件等。 EasyRecovery for m
webstorm mac使用破解補丁 無需註冊碼
本問出自: http://blog.csdn.net/wyk304443164 本文只會教 http://idea.lanyus.com/ 內:破解補丁無需使用註冊碼 的教程 將“0.0.0.0 account.jetbrains.com”新增到host
Java的陣列和list升序,降序,逆序函式Collections.sort和Arrays.sort的使用
list升序,降序,逆序List<Integer>list =new ArrayList<Integer>();//如果list是 5 7 2 6 8 1 41、升序:Collections.sort(list) //list: 1 2 4 5 6 7 82、降序:Collection
charles破解啟用方法,註冊碼
1 最簡單的,就是買一個啟用碼,在網上找到一個,記錄一下。 // Charles Proxy License // 適用於Charles任意版本的註冊碼,誰還會想要使用破解版呢。 // Charles 4.2目
關於Java獲取Tomcat7和Tomcat8根目錄路徑webapps的不同
專案需要用到上傳功能,所以想把上傳後的圖片儲存在Tomcat的根目錄下,發現Tomcat和Tomcat獲取根目錄有所不同,特此記錄。 Java獲取Tomcat根目錄示例程式碼如下 private HttpServletRequest request = Ser
java語言基礎回顧(二)--位運算以及原碼,反碼,補碼
原碼,反碼,補碼簡介 *原碼 二進位制的定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。 例:通過一個位元組表示 +7 原碼:0(符號位) 0000111 -7原碼:1(符號位) 0000111 *反碼 正數的反碼與原碼一樣
關於原碼,反碼,補碼和左右移位的若干思考
1.為什麼要使用原碼,反碼,補碼 1)負數二進位制怎麼表示? 答:在原碼中,高位為1就表示負數 2)計算機如何實現減法? 1-1=? 答:對於計算機,邏輯運算應該設計的簡單,1-1可以表示為1+(-1),故沒有減法,用加法實現減法。 1 - 1 = 1 + (-1)
java獲取GET和POST請求引數
一 獲取請求方式 request.getMethod(); get和post都可用, 二 獲取請求型別 request.getContentType(); get和post都可用,示例值:application/json ,multipart/form-data, application/x
Java8 運算子(進位制與轉換、原碼,反碼和補碼、位運算詳解、運算子的優先順序)
進位制 binary: 1 -> 10 -> 11 -> 100 每次從後面進一位 octal: 7-> 10 八進位制是0-7之間,底數為8的計算 hexadecimal:A