package com.gwx.www.test;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
/**
* AES加密解密Demo
*
* @author Guowx
* @date 2019/8/6
*/
public class AESUtil {
/**
* 创建密钥
*
* @param
* @return byte[]
* @data 2019/8/6
* @author Guowx
*/
public static byte[] createKey() {
byte[] keyBytes = null;
try {
//产生key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
//产生密钥
SecretKey secretKey = keyGenerator.generateKey();
keyBytes = secretKey.getEncoded();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return keyBytes;
}
/**
* 加密
*
* @param plaintext 明文
* @param keyBytes 密钥
* @return byte[]
* @data 2019/8/6
* @author Guowx
*/
public static byte[] encryption(String plaintext, byte[] keyBytes) {
Key key = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = null;
byte[] cipherBytes = null;
try {
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherBytes = cipher.doFinal(plaintext.getBytes());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return cipherBytes;
}
public static byte[] decrypt(byte[] ciphertext, byte[] keyBytes) {
Key key = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = null;
byte[] plainBytes = null;
try {
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
plainBytes = cipher.doFinal(ciphertext);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return plainBytes;
}
}
AES加密解密工具类
最新推荐文章于 2023-08-11 14:34:10 发布