package cn.emay.sdk.util; 
 | 
  
 | 
import javax.crypto.Cipher; 
 | 
import javax.crypto.spec.IvParameterSpec; 
 | 
import javax.crypto.spec.SecretKeySpec; 
 | 
  
 | 
/** 
 | 
 * AES加解密工具 
 | 
 *  
 | 
 * @author Frank 
 | 
 * 
 | 
 */ 
 | 
public class AES { 
 | 
     
 | 
    public final static String ALGORITHM_AEPP = "AES/ECB/PKCS5Padding"; 
 | 
  
 | 
    /** 
 | 
     * AES加密 
 | 
     *  
 | 
     * @param content 
 | 
     *            内容 
 | 
     * @param password 
 | 
     *            密钥 
 | 
     * @param algorithm 
 | 
     *            算法 
 | 
     * @return 加密后数据 
 | 
     */ 
 | 
    public static byte[] encrypt(byte[] content, byte[] password, String algorithm) { 
 | 
        if (content == null || password == null) 
 | 
            return null; 
 | 
        try { 
 | 
            Cipher cipher = null; 
 | 
            if (algorithm.endsWith("PKCS7Padding")) { 
 | 
                cipher = Cipher.getInstance(algorithm, "BC"); 
 | 
            } else { 
 | 
                cipher = Cipher.getInstance(algorithm); 
 | 
            } 
 | 
            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES")); 
 | 
            return cipher.doFinal(content); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * AES解密 
 | 
     *  
 | 
     * @param content 
 | 
     *            加密内容 
 | 
     * @param password 
 | 
     *            密钥 
 | 
     * @param algorithm 
 | 
     *            算法 
 | 
     * @return 解密后数据 
 | 
     */ 
 | 
    public static byte[] decrypt(byte[] content, byte[] password, String algorithm) { 
 | 
        if (content == null || password == null) 
 | 
            return null; 
 | 
        try { 
 | 
            Cipher cipher = null; 
 | 
            if (algorithm.endsWith("PKCS7Padding")) { 
 | 
                cipher = Cipher.getInstance(algorithm, "BC"); 
 | 
            } else { 
 | 
                cipher = Cipher.getInstance(algorithm); 
 | 
            } 
 | 
            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES")); 
 | 
            byte[] bytes = cipher.doFinal(content); 
 | 
            return bytes; 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * AES加密 
 | 
     *  
 | 
     * @param content 
 | 
     *            内容 
 | 
     * @param password 
 | 
     *            密钥 
 | 
     * @param algorithm 
 | 
     *            算法 
 | 
     * @param ivStr 
 | 
     *            向量 
 | 
     * @return 加密后数据 
 | 
     */ 
 | 
    public static byte[] encrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) { 
 | 
        if (content == null || password == null) 
 | 
            return null; 
 | 
        try { 
 | 
            Cipher cipher = null; 
 | 
            if (algorithm.endsWith("PKCS7Padding")) { 
 | 
                cipher = Cipher.getInstance(algorithm, "BC"); 
 | 
            } else { 
 | 
                cipher = Cipher.getInstance(algorithm); 
 | 
            } 
 | 
            IvParameterSpec iv = new IvParameterSpec(ivStr); 
 | 
            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES"), iv); 
 | 
            return cipher.doFinal(content); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * AES解密 
 | 
     *  
 | 
     * @param content 
 | 
     *            加密内容 
 | 
     * @param password 
 | 
     *            密钥 
 | 
     * @param algorithm 
 | 
     *            算法 
 | 
     * @param ivStr 
 | 
     *            向量 
 | 
     * @return 解密后数据 
 | 
     */ 
 | 
    public static byte[] decrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) { 
 | 
        if (content == null || password == null) 
 | 
            return null; 
 | 
        try { 
 | 
            Cipher cipher = null; 
 | 
            if (algorithm.endsWith("PKCS7Padding")) { 
 | 
                cipher = Cipher.getInstance(algorithm, "BC"); 
 | 
            } else { 
 | 
                cipher = Cipher.getInstance(algorithm); 
 | 
            } 
 | 
            IvParameterSpec iv = new IvParameterSpec(ivStr); 
 | 
            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES"), iv); 
 | 
            byte[] bytes = cipher.doFinal(content); 
 | 
            return bytes; 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |