IntelliJ IDEA 14 Keygen
16146 ワード
1 package keygen;
2
3 import java.math.BigInteger;
4 import java.util.Date;
5 import java.util.zip.CRC32;
6
7 public class Keygen {
8
9 private static final int version = 14;
10
11 /**
12 * @param s
13 * @param i
14 * @param bytes
15 * @return
16 */
17 public static short getCRC(String s, int i, byte bytes[]) {
18 CRC32 crc32 = new CRC32();
19 if (s != null) {
20 for (int j = 0; j < s.length(); j++) {
21 char c = s.charAt(j);
22 crc32.update(c);
23 }
24 }
25 crc32.update(i);
26 crc32.update(i >> 8);
27 crc32.update(i >> 16);
28 crc32.update(i >> 24);
29 for (int k = 0; k < bytes.length - 2; k++) {
30 byte byte0 = bytes[k];
31 crc32.update(byte0);
32 }
33 return (short) (int) crc32.getValue();
34 }
35
36 /**
37 * @param biginteger
38 * @return String
39 */
40 public static String encodeGroups(BigInteger biginteger) {
41 BigInteger beginner1 = BigInteger.valueOf(0x39aa400L);
42 StringBuilder sb = new StringBuilder();
43 for (int i = 0; biginteger.compareTo(BigInteger.ZERO) != 0; i++) {
44 int j = biginteger.mod(beginner1).intValue();
45 String s1 = encodeGroup(j);
46 if (i > 0) {
47 sb.append("-");
48 }
49 sb.append(s1);
50 biginteger = biginteger.divide(beginner1);
51 }
52 return sb.toString();
53 }
54
55 /**
56 * @param i
57 * @return
58 */
59 public static String encodeGroup(int i) {
60 StringBuilder sb = new StringBuilder();
61 for (int j = 0; j < 5; j++) {
62 int k = i % 36;
63 char c;
64 if (k < 10) {
65 c = (char) (48 + k);
66 } else {
67 c = (char) ((65 + k) - 10);
68 }
69 sb.append(c);
70 i /= 36;
71 }
72 return sb.toString();
73 }
74
75 /**
76 * @param name
77 * @param days
78 * @param id
79 * @return
80 */
81 public static String MakeKey(String name, int days, int id) {
82 id %= 100000;
83 byte bkey[] = new byte[12];
84 bkey[0] = (byte) 1; // Product type: IntelliJ IDEA is 1
85 bkey[1] = version;
86 Date d = new Date();
87 long ld = (d.getTime() >> 16);
88 bkey[2] = (byte) (ld & 255);
89 bkey[3] = (byte) ((ld >> 8) & 255);
90 bkey[4] = (byte) ((ld >> 16) & 255);
91 bkey[5] = (byte) ((ld >> 24) & 255);
92 days &= 0xffff;
93 bkey[6] = (byte) (days & 255);
94 bkey[7] = (byte) ((days >> 8) & 255);
95 bkey[8] = 105;
96 bkey[9] = -59;
97 bkey[10] = 0;
98 bkey[11] = 0;
99 int w = getCRC(name, id % 100000, bkey);
100 bkey[10] = (byte) (w & 255);
101 bkey[11] = (byte) ((w >> 8) & 255);
102 BigInteger pow = new BigInteger("89126272330128007543578052027888001981", 10);
103 BigInteger mod = new BigInteger("86f71688cdd2612ca117d1f54bdae029", 16);
104 BigInteger k0 = new BigInteger(bkey);
105 BigInteger k1 = k0.modPow(pow, mod);
106 String s0 = Integer.toString(id);
107 String sz = "0";
108 while (s0.length() != 5) {
109 s0 = sz.concat(s0);
110 }
111 s0 = s0.concat("-");
112 String s1 = encodeGroups(k1);
113 s0 = s0.concat(s1);
114 return s0;
115 }
116 }
Random r = new Random();
String key = MakeKey(userName, 0, r.nextInt(Integer.MAX_VALUE));
ダウンロードアドレス:Keygen-14.zip