View Code
 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的注册码—可用

posted on 2012-06-28 14:09  双面煎蛋  阅读(426)  评论(0编辑  收藏  举报