Java课程的小练习 只是随便做做看
工具介绍
- 该工具使用机器MAC地址作为机器码,具有唯一性避免重复。
- 该工具自动获取计算机名作为用户名。
- 注册码通过自定义算法计算。
- 该工具具有激活状态保存与启动检查功能,若在激活过后重新运行软件仍会保持已激活的状态。
- 该工具具有试用功能,以试用模式运行软件则会在应用窗口标题显示“(试用版)”。
使用教程
- 运行软件,弹出【注册产品】窗口,点击“购买软件”可通过指定方式上传机器码并取得注册码。(用户名默认为当前计算机用户的用户名,可以修改)
- 点击注册验证注册码,若输入错误会提示注册失败对话框,若注册成功会在弹出成功对话框后跳转至软件窗口(标题为已注册)。(软件窗口会显示用户名和注册码信息)
- 重新运行软件会先验证软件是否已注册,若已注册则直接进入软件窗口(标题为已注册)。(删除根目录下的“Code”文件会删除注册信息)
- 在软件【注册产品】窗口点击“使用软件”后将直接跳转至软件窗口(标题为未注册),且注册码处信息为“试用版”。
技术简述
类与模块
- AppliFrame —— 软件窗体
- getMAC —— 获得计算机MAC地址
- getUID —— 获得计算机名
- JudgeReg —— 判断是否已注册(入口)
- KeyVerification —— 注册码计算验证
- RegisterFrame —— 软件窗体
注册码的计算
KeyVerification1 2 3 4 5 6 7 8 9 10 11 12 13
| MAC = MAC.trim(); String StrCode = ""; String CodeHex = "null"; if (MAC != null && !"".equals(MAC)) { for (int i = 0; i < MAC.length(); i++) { if (MAC.charAt(i) >= 48 && MAC.charAt(i) <= 57) { StrCode += MAC.charAt(i); } } int Code = Integer.parseInt(StrCode); CodeHex = Integer.toHexString(Code); System.out.println(MAC +" [识别码]---->[提取] " + Code + " [十进制]---->[十六进制] " + CodeHex);
|
MAC地址的获取
getMAC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| InetAddress adress = InetAddress.getLocalHost(); NetworkInterface net = NetworkInterface.getByInetAddress(adress); byte[] macBytes = net.getHardwareAddress(); String LocalMAC = transBytesToStr(macBytes); public static String transBytesToStr(byte[] bytes){ StringBuffer buffer = new StringBuffer(); for(int i = 0; i < bytes.length; i++){ if(i != 0) buffer.append("-"); int intMac = bytes[i]&0xff; String str = Integer.toHexString(intMac); if(str.length() == 0){ buffer.append("0"); } buffer.append(str); } return buffer.toString().toUpperCase(); }
|
计算机名的获取
getUID1 2 3 4 5
| String UID = "未获取到计算机名,请手动填写。"; String computerName = System.getenv().get("COMPUTERNAME"); if (computerName != "" && computerName != null) { UID = computerName; }
|
注册码的验证
JudgeReg1 2 3 4 5 6 7
| if (KeyVerification.VerificationMAC(Code)) { JOptionPane.showMessageDialog(null, "该软件已授权给: " + UID + " !", "提示", JOptionPane.INFORMATION_MESSAGE); new AppliFrame("欢迎使用XXXXXX软件,注册给:" + UID).setVisible(true); } else { new RegisterFrame("注册产品"); }
|
文件的写入与读取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| FileWriter creatMAC = new FileWriter("MachineCode"); File writeMAC = new File("MachineCode"); PrintStream ps = new PrintStream(new FileOutputStream(writeMAC)); ps.println(LocalMAC); creatMAC.close();
File CodeFile = new File("Code"); CodeFile.createNewFile(); FileReader CodeReader = new FileReader("Code"); LineNumberReader Creader = new LineNumberReader(CodeReader); String Code = ""; Code = Creader.readLine(); Creader.close(); CodeReader.close();
|
窗体的建立
- 这个太复杂了就不列出代码了
- 使用包 java.awt.*
制作时间
2019-5-22 — 2019-5-23
开发环境
Eclipse