package com.moon.server.helper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; /** * 许可帮助类 * @author WWW */ public class LicHelper { private String a; private String b; private static String c; private static String d; private static String e; private static final Logger f; static { c = "utf-8"; d = "AES"; e = "AES/CBC/PKCS5Padding"; f = LoggerFactory.getLogger(LicHelper.class); } private IvParameterSpec a() { try { return new IvParameterSpec(this.b.getBytes(c)); } catch (Exception ex) { return null; } } public final String a(final String s) { String str = null; try { // final Cipher instance // (instance = Cipher.getInstance(e)).init(1, new SecretKeySpec(this.a.getBytes(c), d), this.a()) // str = a(instance.doFinal(s.getBytes(Charset.forName(c)))) Cipher instance = Cipher.getInstance(e); IvParameterSpec ips = this.a(); SecretKeySpec sks = new SecretKeySpec(this.a.getBytes(c), d); instance.init(1, sks, ips); byte[] bytes = s.getBytes(Charset.forName(c)); str = a(instance.doFinal(bytes)); } catch (Exception ex) { System.out.println(ex.getStackTrace()); } return str; } public final String b(final String s) { String s2 = null; try { final Cipher instance; (instance = Cipher.getInstance(e)).init(2, new SecretKeySpec(this.a.getBytes(c), d), this.a()); s2 = new String(instance.doFinal(this.e(s)), c); } catch (Exception ex) { String str = ex.getMessage(); } return s2; } private static String a(final byte[] array) { final StringBuilder sb = new StringBuilder(); for (int i = 0; i < array.length; ++i) { final String hexString; if ((hexString = Integer.toHexString(array[i] & 0xFF)).length() < 2) { sb.append("0"); } sb.append(hexString); } return sb.toString(); } private byte[] e(String upperCase) { final int n = (upperCase = upperCase.toUpperCase()).length() / 2; final char[] charArray = upperCase.toCharArray(); final byte[] array = new byte[n]; for (int i = 0; i < n; ++i) { final int n2 = i << 1; array[i] = (byte) ((byte) "0123456789ABCDEF".indexOf(charArray[n2]) << 4 | (byte) "0123456789ABCDEF".indexOf(charArray[n2 + 1])); } return array; } public final void c(String string) { final String substring = (string = string).substring(2, 5); final StringBuilder sb; (sb = new StringBuilder(string)).replace(2, 5, string.substring(7, 10)); sb.replace(7, 10, substring); string = sb.toString(); this.a = string; } public final void d(final String b) { this.b = b; } }