package com.lf.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';
|
}
|
}
|
}
|
}
|