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

intellij—idea14 注冊机的更多相关文章

  1. SecureCRT 6.7.1 注冊机 和谐 破解 补丁 方法

    之前一直在用SecureCRT 6.5.3 版本号,和谐补丁也好找,甚至中文版本号也可找到(眼下仅仅找到了SecureCRT.6.2.0) 可是换为 6.7.1 后就怎么也注冊不了了.. 没办法试了各 ...

  2. Ubuntu IntelliJ IDEA 注冊碼與Gradle相關

    一.Ubuntu IntelliJ IDEA 注冊碼 在线免费生成IntelliJ IDEA 15.0(16.+)注册码 注冊參考:https://www.iteblog.com/idea/ 依次选择 ...

  3. WingIDE 5.0注冊机

    在wingIDE下开发python很方便,但IDE不是免费的,网上有破解的方法.请支持正版. 把下列文件CalcActivationCode.py载入到wingIDE中.LicenseID能够随便给一 ...

  4. CLion注冊码算法逆向分析实录(纯研究)

    声明 CLion程序版权为jetBrains全部.注冊码授权为jetBrains及其付费用户全部,本篇仅仅从兴趣出发,研究其注冊码生成算法. 不会释出不论什么完整的源码. 网上查了下.已有注冊机,所以 ...

  5. Android应用程序注冊广播接收器(registerReceiver)的过程分析

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器, ...

  6. Eureka 的 Application Service client的注冊以及执行演示样例

            Eureka 服务器架起来了(关于架设步骤參考博客<Linux 下 Eureka 服务器的部署>),如今怎样把我们要负载均衡的服务器(也就是从 Application Cl ...

  7. C#注冊表操作汇总

    一.注冊表基本知识 1)       结构 键->项->子项->值项(名称.类型.数据) REG_SZ         字符串 REG_BINARY    二进制 REG_DWORD ...

  8. Dynamics CRM2013/2015 插件注冊工具登录后无法显示assembly列表问题的解决的方法

    自微软从2013版本号推出新的插件注冊器后,随着UI的重大更新后,问题也多了非常多.前面已有博客提到注冊assembly时看不到注冊button(http://blog.csdn.net/vic022 ...

  9. IntelliJ Idea14 创建Maven多模块项目

    Maven多模块项目的参考资料 Sonatype上的教程 http://books.sonatype.com/mvnex-book/reference/multimodule.html 在这个教程里, ...

随机推荐

  1. sublime text3 3143注册码

    注册码: -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 ...

  2. BZOJ 3280 费用流

    思路: 同BZOJ 1221 //By SiriusRen #include <queue> #include <cstdio> #include <cstring> ...

  3. Oracle数据库Helper类

    using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...

  4. FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC

    FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC 最近做了一个事情,过滤下kakfa中的数据后,做这个就用到了flume,直接使用flume source 和 flume s ...

  5. java反射与多态(父类调用子类)的代码演示

    package Test0817; import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method ...

  6. JavaScript知识复习

    JavaScript 数据类型 原始数据类型: number string boolean null undefined 对象:object: Function Array Date... 共有六种数 ...

  7. python 代码编写规范

    一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类 ...

  8. jquery validate验证规则重用

    当多个控件验证规则相同时,如何避免冗余代码并应用相同规则呢? [1st way. addMethod+addClassRules] 场景:维护学生档案时需要维护父母.监护人.紧急联系人的身份证号码,此 ...

  9. 洛谷2863 [Usaco06JAN]牛的舞会

    题目描述 约翰的N (2 <= N <= 10,000)只奶牛非常兴奋,因为这是舞会之夜!她们穿上礼服和新鞋子,别 上鲜花,她们要表演圆舞. 只有奶牛才能表演这种圆舞.圆舞需要一些绳索和一 ...

  10. Python学习笔记(1)--Windows基本环境搭建

    1.安装Python 官网下载地址:https://www.python.org/downloads/ 下载完成后安装选择自定义安装,并勾选自动填写环境变量,如果是默认安装,还需要自己手动配置环境变量 ...