본문 바로가기
Java/Java

AES256 암복호화

by ddss6565 2021. 6. 7.
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

댓글