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