public class AES256Util
{
private final String key = "VqkuZRkCOEWWImEItwitnUWFQQxWDeqo";
private final SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
public String encrypt(String plainText) throws Exception
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
byte[] iv = new byte[cipher.getBlockSize()];
SecureRandom.getInstanceStrong().nextBytes(iv);
AlgorithmParameterSpec ivParameterSpec = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
return Base64.encodeBase64String(ArrayUtils.addAll(iv, cipher.doFinal(plainText.getBytes())));
}
public String decrypt(String cipherText) throws Exception
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
byte[] cipherTextByte = Base64.decodeBase64(cipherText);
byte[] iv = Arrays.copyOfRange(cipherTextByte, 0, cipher.getBlockSize());
AlgorithmParameterSpec ivParameterSpec = new IvParameterSpec(iv);
byte[] encrypted = Arrays.copyOfRange(cipherTextByte, cipher.getBlockSize(), cipherTextByte.length);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
return new String(cipher.doFinal(encrypted));
}
}
반응형
'Java > Java' 카테고리의 다른 글
Spring @Async 어노테이션 사용 (0) | 2023.07.16 |
---|---|
Java Optional 사용법 (0) | 2023.07.16 |
Spring Logback 설정 (0) | 2023.07.16 |
Java FX + Eclipse 개발 세팅 (0) | 2023.07.16 |
Java에서 EzTransXP(일본어번역기) 사용법 (0) | 2021.06.07 |
댓글