文档章节

idear激活码生成代码

超级普华
 超级普华
发布于 2016/12/21 14:43
字数 382
阅读 98
收藏 0

import java.math.BigInteger;  
import java.util.Date;  
import java.util.Random;  
import java.util.zip.CRC32;  
  
public class keygen  
{  
  /** 
  * @param
  * @param
  * @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 String 
  */  
  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 
  * @param prtype 
  * @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;  
  }  
  
  public static void main(String[] args)  
  {  
      if (args.length == 0)  
      {  
          System.err.printf("*** Usage: %s name%n", keygen.class.getCanonicalName());  
          System.exit(1);  
      }  
      Random r = new Random();  
      System.out.println(MakeKey(args[0], 0, r.nextInt(100000)));  
  }  
}

 

执行方法如下图:

© 著作权归作者所有

超级普华
粉丝 0
博文 6
码字总数 6874
作品 0
海淀
私信 提问
Python 趣味练习- 保存激活码到mysql和redis

今天接着做练习,题目出自 https://github.com/Yixiaohan/show-me-the-code 第 0001 题: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Py...

beanxyz
2017/10/12
0
0
随机0-35六次和随机0-2176782335(36的六次方)重复率相差很大的问题

昨天有一个需求 生成六位数字字母组成的激活码 重复率越小越好 ---------------------------------以上是背景 简单 不要求长度可以使用uuid或md5值 要求六位 就随机吧 有两种方案 1 随机0-3...

强船生
2015/08/04
336
10
python for 插入数据失败

生成了200个激活码,将其写入到数据库中,代码执行无报错,但数据未写入,原因不知。 目前,激活码生成正确,数据库创建正确,只有写入失败。 版本: win10 python 3.7.2 mysql 8.0.13 pymy...

陆雨笙
03/28
50
1
WebGIS--ArcGIS for Flex系列开发一:flash builder

概述 arcgis for flex 相关软件 链接:http://pan.baidu.com/s/1i5zRiAh 密码:mtqc 开始次文档之前需要阅读《WebGIS--ArcGIS系列开发》的相关文档 Flash Builder 安装过程选试用,然后其他的...

洋碱
2017/11/06
15
0
产生唯一随机码的方法分析

自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当...

好铁
2016/07/04
296
1

没有更多内容

加载失败,请刷新页面

加载更多

CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
35分钟前
4
0
Confluence 6.15 使用附件宏

希望添加附件宏到一个页面中: 从编辑工具栏中,选择 插入(Insert) > 其他宏(Other Macros) 找到并且选择需要的宏。 可用使用自动完成加快这个过程:输入 { 然后开始输入你希望插入的宏的...

honeymoose
56分钟前
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部