package com.yeshi.buwan.util; import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * AES加密解密 * * @author Administrator */ public class AESUtil { private final static String KEY = "1234567890123456"; public static String encrypt(String content) { try { // KeyGenerator提供对策密钥生成器的功能,支持各种算法 KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(KEY.getBytes()); kgen.init(128, secureRandom); // SecretKey 负责保存对称密钥 SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES"); // 创建密码器 Cipher cipher = Cipher.getInstance("AES"); byte[] byteContent = content.getBytes("utf-8"); // 初始化 cipher.init(Cipher.ENCRYPT_MODE, key); // 加密 byte[] result = cipher.doFinal(byteContent); return StringUtil.getBase64FromByte(result); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return new String(); } /* * 注意:解密的时候要传入byte数组 解密 * * @param content 待解密内容 * * @param password 解密密钥 * * @return */ // public String decrypt(byte[] content, String password) { public static String decrypt(String contentStr) { try { byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr); KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(KEY.getBytes()); kgen.init(128, secureRandom); SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES"); // 创建密码器 Cipher cipher = Cipher.getInstance("AES"); // 初始化 cipher.init(Cipher.DECRYPT_MODE, key); // 加密 byte[] result = cipher.doFinal(content); return new String(result); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return new String(); } public static String decrypt(byte[] contentStr, String k) { try { byte[] content = contentStr; KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(k.getBytes()); kgen.init(128, secureRandom); SecretKeySpec key = new SecretKeySpec(k.getBytes(), "AES"); // 创建密码器 Cipher cipher = Cipher.getInstance("AES"); // 初始化 cipher.init(Cipher.DECRYPT_MODE, key); // 加密 byte[] result = cipher.doFinal(content); return new String(result, "utf-8"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return new String(); } }