1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
import
java.text.DecimalFormat;
import
java.text.NumberFormat;
import
java.text.SimpleDateFormat;
import
java.util.Calendar;
public
class
CalSn {
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."
;
public
String getSerial(String userId, String type) {
NumberFormat nf =
new
DecimalFormat(
"000"
);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR,
3
);
cal.add(Calendar.DAY_OF_YEAR, -
1
);
String licenseNum = nf.format((
int
) (Math.random() *
1000
));
String expTime =
new
StringBuilder(
"-"
)
.append(
new
SimpleDateFormat(
"yyMMdd"
).format(cal.getTime()))
.append(
"0"
).toString();
String need =
new
StringBuilder(userId.substring(
0
,
1
)).append(
"Y"
)
.append(type).append(
"-100"
).append(licenseNum).append(expTime)
.toString();
String dx =
new
StringBuilder(need).append(LL).append(userId)
.toString();
int
suf =
this
.decode(dx);
String code =
new
StringBuilder(need).append(String.valueOf(suf))
.toString();
return
this
.change(code);
}
private
int
decode(String s) {
int
i;
char
[] ac;
int
j;
int
k;
i =
0
;
ac = s.toCharArray();
j =
0
;
k = ac.length;
while
(j < k) {
i = (
31
* i) + ac[j];
j++;
}
return
Math.abs(i);
}
private
String change(String s) {
byte
[] abyte0;
char
[] ac;
int
i;
int
k;
int
j;
abyte0 = s.getBytes();
ac =
new
char
[s.length()];
i =
0
;
k = abyte0.length;
while
(i < k) {
j = abyte0[i];
if
((j >=
48
) && (j <=
57
)) {
j = (((j -
48
) +
5
) %
10
) +
48
;
}
else
if
((j >=
65
) && (j <=
90
)) {
j = (((j -
65
) +
13
) %
26
) +
65
;
}
else
if
((j >=
97
) && (j <=
122
)) {
j = (((j -
97
) +
13
) %
26
) +
97
;
}
ac[i] = (
char
) j;
i++;
}
return
String.valueOf(ac);
}
public
static
void
main(String[] args) {
String userId =
"qiang"
;
CalSn myeclipsegen =
new
CalSn();
String res = myeclipsegen.getSerial(userId,
"E3MS"
);
System.out.println(
"Serial:"
+ res);
}
}
|
运行结果:
运行结果:
运行:D:\Java\jdk1.8.0\bin\java.exe CalSn
Serial:dLR8ZF-655880-6151685350542957
输出结束,返回值是[0].
所以序列号为:
qiang
dLR8ZF-655880-6151685350542957
本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1221748