package com.alipay.config; import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.zip.CRC32; public class keygen { private static final int version=14; /** * @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 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 * @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] = 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) { Random r = new Random(); System.out.println("user name:" + "Ola" + " KEY:" + MakeKey("Ola", 0, r.nextInt(Integer.MAX_VALUE))); } }
相关推荐
idea使用教程 IntelliJ IDEA 使用教程 ,IntelliJ IDEA 使用教程
IntelliJIDEA快捷键中文版PDF版本
IntelliJ IDEA 使用教程 pdf
图解Intellij IDEA 入门教程,简单看得见,轻轻松松成为java开发高手
IntelliJ IDEA 中文指南
IntelliJ IDEA 2020.1.4 x64官方
史上最简单的 IntelliJ IDEA 教程
intellij IDEA使用教程,intellij IDEA使用教程intellij IDEA使用教程intellij IDEA使用教程intellij IDEA使用教程intellij IDEA使用教程
IntellijIdea开发工具详细使用文档.pdf
IntelliJ IDEA是java编程语言开发的集成环境,不过官方是英文版的,这是一个汉化包,下载后放至IntelliJ IDEA安装目录的lib目录下就行,重新启动程序就是中文了。
通过Intellij IDEA图形化的使用Git工具; 关联Intellij IDEA和Github账号; 上传项目至Github; 解决代码冲突; 分支创建,合并,删除
vscode-intellij-idea-keybindings, vs 代码的IntelliJ IDEA 键绑定端口 用于 Visual Studio 代码的 IntelliJ IDEA 键绑定 vs 代码的IntelliJ IDEA 键绑定端口。 包括 keymaps,WebStorm,PyCharm,PHP Storm等流行...
在 IntelliJ IDEA 中配置 Tomcat 服务器是为了能够在开发过程中部署和运行您的 Java Web 应用程序。下面是配置 Tomcat 的基本步骤: 下载和安装 Tomcat: 首先,您需要从 Apache Tomcat 的官方网站...
关于Intellij IDEA的教程
IntelliJ IDEA安装详解配置教程
教你应用Intellij idea高效的建立java工程,并使用idea高效开发。
IntelliJ IDEA 使用教程 - v1.0,intellijidea使用教程视频,Java源码
intellij_idea 开发工具 简介及使用方法介绍。适合公司及团队内部技术交流使用。