/*     */ package com.picc.grab.util;
/*     */ 
/*     */ import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
/*     */ import java.security.MessageDigest;
/*     */ import java.security.SecureRandom;
/*     */ import javax.crypto.Cipher;
/*     */ import javax.crypto.KeyGenerator;
/*     */ import javax.crypto.Mac;
/*     */ import javax.crypto.SecretKey;
/*     */ import javax.crypto.spec.SecretKeySpec;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class EncryptUtil
/*     */ {
/*     */   public static final String MD5 = "MD5";
/*     */   public static final String SHA1 = "SHA1";
/*     */   public static final String HmacMD5 = "HmacMD5";
/*     */   public static final String HmacSHA1 = "HmacSHA1";
/*     */   public static final String DES = "DES";
/*     */   public static final String AES = "AES";
/*  25 */   public static String charset = "utf-8";
/*     */   
/*  27 */   public static int keysizeDES = 0;
/*     */   
/*  29 */   public int keysizeAES = 128;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   private String messageDigest(String res, String algorithm) {
/*     */     try {
/*  39 */       MessageDigest md = MessageDigest.getInstance(algorithm);
/*  40 */       byte[] resBytes = (charset == null) ? res.getBytes() : res.getBytes(charset);
/*  41 */       return base64(md.digest(resBytes));
/*  42 */     } catch (Exception e) {
/*  43 */       e.printStackTrace();
/*     */       
/*  45 */       return null;
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   private String keyGeneratorMac(String res, String algorithm, String key) {
/*     */     try {
/*  57 */       SecretKey sk = null;
/*  58 */       if (key == null) {
/*  59 */         KeyGenerator kg = KeyGenerator.getInstance(algorithm);
/*  60 */         sk = kg.generateKey();
/*     */       } else {
/*  62 */         byte[] keyBytes = (charset == null) ? key.getBytes() : key.getBytes(charset);
/*  63 */         sk = new SecretKeySpec(keyBytes, algorithm);
/*     */       } 
/*  65 */       Mac mac = Mac.getInstance(algorithm);
/*  66 */       mac.init(sk);
/*  67 */       byte[] result = mac.doFinal(res.getBytes());
/*  68 */       return base64(result);
/*  69 */     } catch (Exception e) {
/*  70 */       e.printStackTrace();
/*     */       
/*  72 */       return null;
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   private static String keyGeneratorES(String res, String algorithm, String key, int keysize, boolean isEncode) {
/*     */     try {
/*  86 */       KeyGenerator kg = KeyGenerator.getInstance(algorithm);
/*  87 */       if (keysize == 0) {
/*  88 */         byte[] keyBytes = (charset == null) ? key.getBytes() : key.getBytes(charset);
/*  89 */         kg.init(new SecureRandom(keyBytes));
/*  90 */       } else if (key == null) {
/*  91 */         kg.init(keysize);
/*     */       } else {
/*  93 */         byte[] keyBytes = (charset == null) ? key.getBytes() : key.getBytes(charset);
/*  94 */         kg.init(keysize, new SecureRandom(keyBytes));
/*     */       } 
/*  96 */       SecretKey sk = kg.generateKey();
/*  97 */       SecretKeySpec sks = new SecretKeySpec(sk.getEncoded(), algorithm);
/*  98 */       Cipher cipher = Cipher.getInstance(algorithm);
/*  99 */       if (isEncode) {
/* 100 */         cipher.init(1, sks);
/* 101 */         byte[] resBytes = (charset == null) ? res.getBytes() : res.getBytes(charset);
/* 102 */         return parseByte2HexStr(cipher.doFinal(resBytes));
/*     */       } 
/* 104 */       cipher.init(2, sks);
/* 105 */       return new String(cipher.doFinal(parseHexStr2Byte(res)));
/*     */     }
/* 107 */     catch (Exception e) {
/* 108 */       e.printStackTrace();
/*     */       
/* 110 */       return null;
/*     */     } 
/*     */   }
/*     */   private String base64(byte[] res) {
/* 114 */     return Base64.encode(res);
/*     */   }
/*     */ 
/*     */   
/*     */   public static String parseByte2HexStr(byte[] buf) {
/* 119 */     StringBuffer sb = new StringBuffer();
/* 120 */     for (int i = 0; i < buf.length; i++) {
/* 121 */       String hex = Integer.toHexString(buf[i] & 0xFF);
/* 122 */       if (hex.length() == 1) {
/* 123 */         hex = '0' + hex;
/*     */       }
/* 125 */       sb.append(hex.toUpperCase());
/*     */     } 
/* 127 */     return sb.toString();
/*     */   }
/*     */   
/*     */   public static byte[] parseHexStr2Byte(String hexStr) {
/* 131 */     if (hexStr.length() < 1)
/* 132 */       return null; 
/* 133 */     byte[] result = new byte[hexStr.length() / 2];
/* 134 */     for (int i = 0; i < hexStr.length() / 2; i++) {
/* 135 */       int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
/* 136 */       int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
/* 137 */       result[i] = (byte)(high * 16 + low);
/*     */     } 
/* 139 */     return result;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String MD5(String res) {
/* 148 */     return messageDigest(res, "MD5");
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String MD5(String res, String key) {
/* 158 */     return keyGeneratorMac(res, "HmacMD5", key);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String SHA1(String res) {
/* 167 */     return messageDigest(res, "SHA1");
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String SHA1(String res, String key) {
/* 177 */     return keyGeneratorMac(res, "HmacSHA1", key);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static String DESencode(String res, String key) {
/* 187 */     return keyGeneratorES(res, "DES", key, keysizeDES, true);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static String DESdecode(String res, String key) {
/* 197 */     return keyGeneratorES(res, "DES", key, keysizeDES, false);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String AESencode(String res, String key) {
/* 207 */     return keyGeneratorES(res, "AES", key, this.keysizeAES, true);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String AESdecode(String res, String key) {
/* 217 */     return keyGeneratorES(res, "AES", key, this.keysizeAES, false);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String XORencode(String res, String key) {
/* 227 */     byte[] bs = res.getBytes();
/* 228 */     for (int i = 0; i < bs.length; i++) {
/* 229 */       bs[i] = (byte)(bs[i] ^ key.hashCode());
/*     */     }
/* 231 */     return parseByte2HexStr(bs);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String XORdecode(String res, String key) {
/* 241 */     byte[] bs = parseHexStr2Byte(res);
/* 242 */     for (int i = 0; i < bs.length; i++) {
/* 243 */       bs[i] = (byte)(bs[i] ^ key.hashCode());
/*     */     }
/* 245 */     return new String(bs);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int XOR(int res, String key) {
/* 255 */     return res ^ key.hashCode();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String Base64Encode(String res) {
/* 264 */     return Base64.encode(res.getBytes());
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String Base64Decode(String res) {
/* 273 */     return new String(Base64.decode(res));
/*     */   }
/*     */ 
/*     */   
/*     */   public static void main(String[] args) {
/* 278 */     String sd = DESencode("测试加密测试加密测试加密测试加密测试加密测试加密测试加密测试加密测试加密测试加密测试加密", "秘钥");
/* 279 */     System.out.println(sd);
/* 280 */     System.out.println(DESdecode(sd, "秘钥"));
/*     */   }
/*     */ }


/* Location:              C:\Users\Administrator\Desktop\ROOT\WEB-INF\classes\!\com\picc\gra\\util\EncryptUtil.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */