intellij idea14的注册码

import  java.math.BigInteger;
import  java.util.Date;
import  java.util.Random;
import  java.util.zip.CRC32;
 
public  class  KeyGen {
 
     /**
      * 
      * @param s
      * @param i
      * @param bytes
      * @return
      */
     public  static  short  getCRC(String s,  int  i,  byte  bytes[]) {
         CRC32 crc32 =  new  CRC32();
         if  (s !=  null ) {
             for  ( int  j =  0 ; j < s.length(); j++) {
                 char  c = s.charAt(j);
                 crc32.update(c);
             }
         }
         crc32.update(i);
         crc32.update(i >>  8 );
         crc32.update(i >>  16 );
         crc32.update(i >>  24 );
         for  ( int  k =  0 ; k < bytes.length -  2 ; k++) {
             byte  byte0 = bytes[k];
             crc32.update(byte0);
         }
         return  ( short ) ( int ) crc32.getValue();
     }
 
     /**
      * 
      * @param biginteger
      * @return
      */
     public  static  String encodeGroups(BigInteger biginteger) {
         BigInteger beginner1 = BigInteger.valueOf(0x39aa400L);
         StringBuilder sb =  new  StringBuilder();
         for  ( int  i =  0 ; biginteger.compareTo(BigInteger.ZERO) !=  0 ; i++) {
             int  j = biginteger.mod(beginner1).intValue();
             String s1 = encodeGroup(j);
             if  (i >  0 ) {
                 sb.append( "-" );
             }
             sb.append(s1);
             biginteger = biginteger.divide(beginner1);
         }
         return  sb.toString();
     }
 
     /**
      * 
      * @param i
      * @return
      */
     public  static  String encodeGroup( int  i) {
         StringBuilder sb =  new  StringBuilder();
         for  ( int  j =  0 ; j <  5 ; j++) {
             int  k = i %  36 ;
             char  c;
             if  (k <  10 ) {
                 c = ( char ) ( 48  + k);
             }  else  {
                 c = ( char ) (( 65  + k) -  10 );
             }
             sb.append(c);
             i /=  36 ;
         }
         return  sb.toString();
     }
 
     /**
      * 
      * @param name
      * @param days
      * @param id
      * @return
      */
     public  static  String MakeKey(String name,  int  days,  int  id) {
         id %=  100000 ;
         byte  bkey[] =  new  byte [ 12 ];
         bkey[ 0 ] = ( byte )  1 ;  // Product type: IntelliJ IDEA is 1
         bkey[ 1 ] =  14 ;  // version
         Date d =  new  Date();
         long  ld = (d.getTime() >>  16 );
         bkey[ 2 ] = ( byte ) (ld &  255 );
         bkey[ 3 ] = ( byte ) ((ld >>  8 ) &  255 );
         bkey[ 4 ] = ( byte ) ((ld >>  16 ) &  255 );
         bkey[ 5 ] = ( byte ) ((ld >>  24 ) &  255 );
         days &=  0xffff ;
         bkey[ 6 ] = ( byte ) (days &  255 );
         bkey[ 7 ] = ( byte ) ((days >>  8 ) &  255 );
         bkey[ 8 ] =  105 ;
         bkey[ 9 ] = - 59 ;
         bkey[ 10 ] =  0 ;
         bkey[ 11 ] =  0 ;
         int  w = getCRC(name, id %  100000 , bkey);
         bkey[ 10 ] = ( byte ) (w &  255 );
         bkey[ 11 ] = ( byte ) ((w >>  8 ) &  255 );
         BigInteger pow =  new  BigInteger( "89126272330128007543578052027888001981" ,  10 );
         BigInteger mod =  new  BigInteger( "86f71688cdd2612ca117d1f54bdae029" ,  16 );
         BigInteger k0 =  new  BigInteger(bkey);
         BigInteger k1 = k0.modPow(pow, mod);
         String s0 = Integer.toString(id);
         String sz =  "0" ;
         while  (s0.length() !=  5 ) {
             s0 = sz.concat(s0);
         }
         s0 = s0.concat( "-" );
         String s1 = encodeGroups(k1);
         s0 = s0.concat(s1);
         return  s0;
     }
 
     /**
      * 
      * @param args
      */
     public  static  void  main(String[] args) {
         Random r =  new  Random();
         System.out.println(MakeKey( "god" ,  0 , r.nextInt( 100000 )));
     }
 
}

你可能感兴趣的:(intellij idea14的注册码)