// Path: src/main/java/com/getui/logful/server/Constants.java
// public class Constants {
// 
//     /**
//      * 详细信息.
//      */
//     public static final int VERBOSE = 0x01;
// 
//     /**
//      * 调试信息.
//      */
//     public static final int DEBUG = 0x02;
// 
//     /**
//      * 通告信息.
//      */
//     public static final int INFO = 0x03;
// 
//     /**
//      * 警告信息.
//      */
//     public static final int WARN = 0x04;
// 
//     /**
//      * 错误信息.
//      */
//     public static final int ERROR = 0x05;
// 
//     /**
//      * 异常信息.
//      */
//     public static final int EXCEPTION = 0x06;
// 
//     /**
//      * 致命信息.
//      */
//     public static final int FATAL = 0x07;
// 
//     /**
//      * 缓存目录.
//      */
//     public static final String CACHE_DIR = "cache";
// 
//     /**
//      * 解析出错的日志文件目录.
//      */
//     public static final String ERROR_DIR = "error";
// 
//     /**
//      * 应用崩溃文件目录.
//      */
//     public static final String CRASH_REPORT_DIR = "crash";
// 
//     /**
//      * 日志文件处理临时文件目录.
//      */
//     public static final String LOG_FILE_TEMP_DIR = "temp";
// 
//     public static final String WEED_TEMP_DIR = "weed";
// 
//     /**
//      * 加解密失败返回字符串.
//      */
//     public static final String CRYPTO_ERROR = "CRYPTO_ERROR";
// 
//     public static final int DEFAULT_GRAY_LEVEL = 100;
// 
//     public static final int PLATFORM_ALL = 0;
// 
//     public static final int PLATFORM_ANDROID = 1;
// 
//     public static final int PLATFORM_IOS = 2;
// 
//     public static final String LOG_FILE_EXTENSION = "txt";
// }
// 
// Path: src/main/java/com/getui/logful/server/entity/Certificate.java
// public class Certificate {
// 
//     private byte[] key;
//     private byte[] iv;
// 
//     public Certificate(byte[] key, byte[] iv) {
//         this.key = key;
//         this.iv = iv;
//     }
// 
//     public byte[] getKey() {
//         return key;
//     }
// 
//     public void setKey(byte[] key) {
//         this.key = key;
//     }
// 
//     public byte[] getIv() {
//         return iv;
//     }
// 
//     public void setIv(byte[] iv) {
//         this.iv = iv;
//     }
// 
// }


import com.getui.logful.server.Constants;
import com.getui.logful.server.entity.Certificate;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.SystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;
package com.getui.logful.server.util;



public class CryptoTool {

    private static final Logger LOG = LoggerFactory.getLogger(CryptoTool.class);

    private static final byte[] errorBytes = new byte[]{0x00, 0x00};

// Path: src/main/java/com/getui/logful/server/Constants.java
// public class Constants {
// 
//     /**
//      * 详细信息.
//      */
//     public static final int VERBOSE = 0x01;
// 
//     /**
//      * 调试信息.
//      */
//     public static final int DEBUG = 0x02;
// 
//     /**
//      * 通告信息.
//      */
//     public static final int INFO = 0x03;
// 
//     /**
//      * 警告信息.
//      */
//     public static final int WARN = 0x04;
// 
//     /**
//      * 错误信息.
//      */
//     public static final int ERROR = 0x05;
// 
//     /**
//      * 异常信息.
//      */
//     public static final int EXCEPTION = 0x06;
// 
//     /**
//      * 致命信息.
//      */
//     public static final int FATAL = 0x07;
// 
//     /**
//      * 缓存目录.
//      */
//     public static final String CACHE_DIR = "cache";
// 
//     /**
//      * 解析出错的日志文件目录.
//      */
//     public static final String ERROR_DIR = "error";
// 
//     /**
//      * 应用崩溃文件目录.
//      */
//     public static final String CRASH_REPORT_DIR = "crash";
// 
//     /**
//      * 日志文件处理临时文件目录.
//      */
//     public static final String LOG_FILE_TEMP_DIR = "temp";
// 
//     public static final String WEED_TEMP_DIR = "weed";
// 
//     /**
//      * 加解密失败返回字符串.
//      */
//     public static final String CRYPTO_ERROR = "CRYPTO_ERROR";
// 
//     public static final int DEFAULT_GRAY_LEVEL = 100;
// 
//     public static final int PLATFORM_ALL = 0;
// 
//     public static final int PLATFORM_ANDROID = 1;
// 
//     public static final int PLATFORM_IOS = 2;
// 
//     public static final String LOG_FILE_EXTENSION = "txt";
// }
// 
// Path: src/main/java/com/getui/logful/server/entity/Certificate.java
// public class Certificate {
// 
//     private byte[] key;
//     private byte[] iv;
// 
//     public Certificate(byte[] key, byte[] iv) {
//         this.key = key;
//         this.iv = iv;
//     }
// 
//     public byte[] getKey() {
//         return key;
//     }
// 
//     public void setKey(byte[] key) {
//         this.key = key;
//     }
// 
//     public byte[] getIv() {
//         return iv;
//     }
// 
//     public void setIv(byte[] iv) {
//         this.iv = iv;
//     }
// 
// }


// Path: src/main/java/com/getui/logful/server/util/CryptoTool.java
import com.getui.logful.server.Constants;
import com.getui.logful.server.entity.Certificate;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.SystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;

package com.getui.logful.server.util;



public class CryptoTool {

    private static final Logger LOG = LoggerFactory.getLogger(CryptoTool.class);

    private static final byte[] errorBytes = new byte[]{0x00, 0x00};

    private static final String KEY_SUFFIX = "A8P20vWlvfSu3JMO6tBjgr05UvjHAh2x";