![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package test; 2 import java.io.*; 3 public class GetSerialNum { 4 private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself."; 5 public String getSerial(String userId, String licenseNum) { 6 java.util.Calendar cal = java.util.Calendar.getInstance(); 7 cal.add(1, 3); 8 cal.add(6, -1); 9 java.text.NumberFormat nf = new java.text.DecimalFormat("000"); 10 licenseNum = nf.format(Integer.valueOf(licenseNum)); 11 String verTime = new StringBuilder("-").append(new java.text. 12 SimpleDateFormat("yyMMdd").format(cal.getTime())).append("0"). 13 toString(); 14 String type = "YE3MP-"; 15 String need = new StringBuilder(userId.substring(0, 1)).append(type). 16 append("300").append(licenseNum).append(verTime).toString(); 17 String dx = new StringBuilder(need).append(LL).append(userId).toString(); 18 int suf = this.decode(dx); 19 String code = new StringBuilder(need).append(String.valueOf(suf)). 20 toString(); 21 return this.change(code); 22 } 23 private int decode(String s) { 24 int i; 25 char[] ac; 26 int j; 27 int k; 28 i = 0; 29 ac = s.toCharArray(); 30 j = 0; 31 k = ac.length; 32 while (j < k) { 33 i = (31 * i) + ac[j]; 34 j++; 35 } 36 return Math.abs(i); 37 } 38 private String change(String s) { 39 byte[] abyte0; 40 char[] ac; 41 int i; 42 int k; 43 int j; 44 abyte0 = s.getBytes(); 45 ac = new char[s.length()]; 46 i = 0; 47 k = abyte0.length; 48 while (i < k) { 49 j = abyte0[i]; 50 if ((j >= 48) && (j <= 57)) { 51 j = (((j - 48) + 5) % 10) + 48; 52 } else if ((j >= 65) && (j <= 90)) { 53 j = (((j - 65) + 13) % 26) + 65; 54 } else if ((j >= 97) && (j <= 122)) { 55 j = (((j - 97) + 13) % 26) + 97; 56 } 57 ac[i] = (char) j; 58 i++; 59 } 60 return String.valueOf(ac); 61 } 62 public GetSerialNum() { 63 super(); 64 } 65 public static void main(String[] args) { 66 try { 67 System.out.println("please input register name:"); 68 BufferedReader reader = new BufferedReader(new InputStreamReader( 69 System.in)); 70 String userId = null; 71 userId = reader.readLine(); 72 GetSerialNum serialNum = new GetSerialNum(); 73 String res = serialNum.getSerial(userId, "20"); 74 System.out.println("Serial:" + res); 75 reader.readLine(); 76 } catch (IOException ex) { 77 } 78 } 79 }
备注:转载,原文地址不详;可以生成MyEclipse6.0的注册码—可用