java获取mac和机器码,注册码的实现
来源:互联网 发布:黄山软件 编辑:程序博客网 时间:2024/06/05 21:18
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获取macprivate 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 = "(yunshouhuxxx@gmail.com)["+ 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-93private 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;}}
1 1
- java获取mac和机器码,注册码的实现
- 通过机器码获得注册码的完整方案
- C#获取CPU序列号机器码并生成注册码
- WebStorm for Mac的下载和注册码
- Delphi通过机器码获得注册码的完整方案
- Delphi通过机器码获得注册码的完整方案
- 获取机器码
- 获取机器码
- 纯java获取CPU序列号,生成机器码
- C#实现注册码 CPU序列号,生成机器码 生成注册码 判断是否注册
- 获取MyEclipse注册码的方法(java源码)
- WMI 基础知识 及获取机器码的类
- Android 获取唯一机器码的代码
- Android 获取唯一机器码的代码
- Android 获取唯一机器码的代码
- C#获取CPU、硬盘、Mac地址并使用CPU和Mac地址生成注册码
- java 获取windows Mac 和linux Mac
- java 获取IP和MAC
- 第十三周 项目一 数组大折腾(2)
- java中使用FTPClient上传下载
- iOS工程 与 资源文件 和 Bundle
- spring mvc接受post数据过大,参数获取为空的解决方法
- POJ2385——Apple Catching
- java获取mac和机器码,注册码的实现
- servlet生命周期
- StringUtils
- C# 多线程问题处理小结
- 经典算法之折半查找
- 多维数组的初始化
- 智能指针:unique_ptr使用简介
- UIFont 大全
- gaussian elimination