import javax.crypto.*;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;importjava.security.InvalidAlgorithmParameterException;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjava.util.Base64;/*** 加解密工具
*
*@authorhackyo
* Created on 2017/12/13 18:33.*/
public final classEncrypt {private static final String CBC_CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";private static final String KEY = "aaaaaaaa";private static final String IV = "abcdefghijklm123";private staticSecretKey secretKey;static{try{
KeyGenerator keyGenerator= KeyGenerator.getInstance("AES");
keyGenerator.init(128, newSecureRandom(KEY.getBytes()));
secretKey= new SecretKeySpec(keyGenerator.generateKey().getEncoded(), "AES");
}catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
}public static voidmain(String[] args) {
String original= "加密我";
String encodedText=aesEncode(original);
System.out.println("密文(Base64加密后的密文)" +encodedText);
System.out.println("原文(解密后)" +aesDecode(encodedText));
}/*** AES加密
*
*@paramoriginal 原文
*@return密文*/
public staticString aesEncode(String original) {try{
Cipher cipher=Cipher.getInstance(CBC_CIPHER_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey,newIvParameterSpec(IV.getBytes()));returnBase64.getEncoder().encodeToString(cipher.doFinal(original.getBytes()));
}catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException |BadPaddingException e) {
e.printStackTrace();
}return null;
}/*** AES解密
*
*@paramciphertext 密文
*@return原文*/
public staticString aesDecode(String ciphertext) {try{
Cipher cipher=Cipher.getInstance(CBC_CIPHER_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKey,newIvParameterSpec(IV.getBytes()));return newString(cipher.doFinal(Base64.getDecoder().decode(ciphertext)));
}catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException |BadPaddingException e) {
e.printStackTrace();
}return null;
}
}