package com.moon.server.entity.other; import org.apache.commons.codec.binary.Hex; import javax.crypto.Cipher; import javax.crypto.SecretKey; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.util.Arrays; import java.util.Calendar; import java.util.Random; /** * CheckOutLicense * @author WWW */ @SuppressWarnings("AlibabaUndefineMagicConstant") public class CheckOutLicense { public static String createFloatingLicense(int n, String s, long expireDate) { int[] registeredModules = new int[]{1, 3, 4, 9, 10, 11, 12, 13, 17, 25, 30, 33, 37}; long n2; if ((n2 = System.currentTimeMillis() + 86400000L) > expireDate) { n2 = expireDate; } CheckOutLicense e = new CheckOutLicense(); e.a(n2); e.a(n); e.cc(s); e.a(registeredModules); return e.aaa(e); } public String aaa(final CheckOutLicense b) { final CheckOutLicense e = b; return new String(a(e.a, e.b, e.c)) + new bb().a(new StringBuilder().append(e.ee()).toString()); } private char[] a(final long n, final int[] array, final int i) { final char[] array2 = new char[48]; final String b = b(n); final String value = String.valueOf(i); final bb b2 = new bb(); final String a = b2.a(b); final String a2 = b2.a(value); final cc c = new cc(); for (int j = 0; j < array.length; ++j) { c.b(array[j]); } final char[] a3 = c.a(); for (int k = 0; k < 16; ++k) { array2[k * 3] = a3[k]; array2[k * 3 + 1] = a.charAt(k); array2[k * 3 + 2] = a2.charAt(k); } return array2; } private static String b(final long timeInMillis) { final Calendar instance; (instance = Calendar.getInstance()).setTimeInMillis(timeInMillis); final int value = instance.get(1); final int value2 = instance.get(2); final int value3 = instance.get(5); final String substring = Integer.toString(value).substring(2, 4); String s; if ((s = Integer.toString(value2 + 1)).length() == 1) { s = "0".concat(String.valueOf(s)); } String s2; if ((s2 = Integer.toString(value3)).length() == 1) { s2 = "0".concat(String.valueOf(s2)); } return String.valueOf(substring) + s + s2; } public static CheckOutLicense a(String s) { try { return null; } catch (Exception ex) { return null; } } public final String ee() { return this.aa; } private String aa; private long a; private int c; private int[] b; public final void a(final long a) { this.a = a; } public final void a(final int c) { this.c = c; } public final void a(final int[] b) { this.b = b; } public final long a() { return this.a; } public final int[] b() { return this.b; } public final int c() { return this.c; } private void cc(String aa) { this.aa = aa; } @SuppressWarnings("AlibabaClassNamingShouldBeCamel") public class bb { private SecretKey a; public bb() { try { this.a = (SecretKey) new ObjectInputStream(new ByteArrayInputStream(Hex.decodeHex("aced0005737200146a6176612e73656375726974792e4b6579526570bdf94fb3889aa5430200044c0009616c676f726974686d7400124c6a6176612f6c616e672f537472696e673b5b0007656e636f6465647400025b424c0006666f726d617471007e00014c00047479706574001b4c6a6176612f73656375726974792f4b657952657024547970653b7870740003444553757200025b42acf317f8060854e00200007870000000084f5b0e52b33dbf797400035241577e7200196a6176612e73656375726974792e4b6579526570245479706500000000000000001200007872000e6a6176612e6c616e672e456e756d00000000000000001200007870740006534543524554".toCharArray()))).readObject(); } catch (Exception ex) { ex.printStackTrace(); } } public String a(final String s) { try { final Cipher instance; (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(1, this.a); return Hex.encodeHexString(instance.doFinal(s.getBytes())); } catch (Exception ex) { return null; } } public String b(final String s) { try { final Cipher instance; (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(2, this.a); return new String(instance.doFinal(Hex.decodeHex(s.toCharArray()))); } catch (Exception ex) { return null; } } } @SuppressWarnings("AlibabaClassNamingShouldBeCamel") public final class cc { private int a; private char[] b; private int c = 63; public cc() { this.a = 0; Arrays.fill(this.b = new char[c], '0'); this.a = new Random().nextInt(16); String obj; if ((obj = Integer.toBinaryString(this.a)).length() == 1) { obj = "000".concat(String.valueOf(obj)); } else if (obj.length() == 2) { obj = "00".concat(String.valueOf(obj)); } else if (obj.length() == 3) { obj = "0".concat(String.valueOf(obj)); } for (int i = 0; i < 4; ++i) { this.b[i] = obj.charAt(i); } } public cc(String binaryString) { this.a = 0; Arrays.fill(this.b = new char[c], '0'); final int length; if ((length = (binaryString = Long.toBinaryString(Long.parseUnsignedLong(binaryString, 16))).length()) <= c) { for (int i = 0; i < length; ++i) { this.b[c - length + i] = binaryString.charAt(i); } } final char[] value = new char[4]; System.arraycopy(this.b, 0, value, 0, 4); binaryString = new String(value); this.a = Integer.parseUnsignedInt(binaryString, 2); } @Override public final String toString() { String string = ""; for (int i = 0; i < c; ++i) { string = String.valueOf(string) + this.b[i]; } return string; } public final char[] a() { final String hexString = Long.toHexString(Long.parseUnsignedLong(this.toString(), 2)); final int n; final char[] array; Arrays.fill(array = new char[n = (c + 1) / 4], '0'); for (int length = hexString.length(), i = 0; i < length; ++i) { array[n - length + i] = hexString.charAt(i); } return array; } public final boolean a(int c) { return (c = this.c(c)) < c && this.b[c] == '1' && c >= 4; } private int c(int n) { if (n >= 0 && n < 59) { if ((n += 4 + this.a) >= 63) { n -= 59; } return n; } return -1; } public final void b(int c) { if ((c = this.c(c)) < c && c >= 4) { this.b[c] = '1'; } } } }