AES256 암호화 / 복호화 > 기술자료 | 해피정닷컴

AES256 암호화 / 복호화 > 기술자료

본문 바로가기

사이트 내 전체검색

AES256 암호화 / 복호화 > 기술자료

Java AES256 암호화 / 복호화

페이지 정보


본문

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Base64;
 
public class AES256Cipher {
    private static String key = "testggisuitken1959imy91jb7076jas"; // AES 암호화  키
    //private static String key = "cde0123456789abf"; // 16 바이트키
    public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 
    public static String AES_Encode(String str, String key)    throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
 
        byte[] textBytes = str.getBytes("UTF-8");
        AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        SecretKeySpec newKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
        Cipher cipher = null;
        cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);
 
        Base64.Encoder encoder = Base64.getEncoder();
        return encoder.encodeToString(cipher.doFinal(textBytes));
    }
 
    public static String AES_Decode(String str, String key)    throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
 
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] textBytes =decoder.decode(str);
        AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        SecretKeySpec newKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
        return new String(cipher.doFinal(textBytes), "UTF-8");
    }
 
    // 암호화
    public static String encrypt(String data) {
        try {
            data = AES_Encode(data, AES256Cipher.key);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return data;
    }
 
    // 복호화
    public static String decrypt(String data) {
        try {
            data = AES_Decode(data, AES256Cipher.key);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return data;
    }
}


암호화 : t7VJP1+3mcZlcJsh9nChPSUYOZSw+QIl2UFJlvkis8Y=
복호화 : 암호화 예제


참고자료
https://link2me.tistory.com/2013

댓글목록

등록된 댓글이 없습니다.


Total 2,632건 1 페이지
  • RSS
기술자료 목록
2632
호스팅   46  2024-11-19 14:41 ~ 2024-11-19 21:17  
2631
Linux   51  2024-11-18 15:45 ~ 2024-11-18 15:48  
2630
일반   56  2024-11-15 16:45 ~ 2024-11-15 16:46  
2629
Secure   110  2024-11-06 18:48 ~ 2024-11-06 18:50  
2628
영카트   246  2024-10-21 13:44 ~ 2024-10-21 19:42  
2627
전자결제   494  2024-09-05 09:30  
2626
MySQL   920  2024-03-29 14:14 ~ 2024-03-29 14:14  
2625
그누보드   1136  2024-02-23 18:40 ~ 2024-02-24 06:13  
2624
JavaScript   1243  2024-02-16 18:50 ~ 2024-02-16 20:37  
열람
Java   1177  2024-02-06 16:49  
2622
PHP   1370  2024-02-06 16:42  
2621
호스팅   1210  2024-01-29 12:54  
2620
PHP   1277  2024-01-26 11:04 ~ 2024-01-26 11:13  
2619
MySQL   1470  2024-01-08 17:37 ~ 2024-03-14 16:00  
2618
SQL   1564  2024-01-08 12:36  
2617
영카트   1647  2024-01-04 14:57  
2616
일반   2559  2023-12-15 18:33  
2615
Android   2049  2023-11-30 18:48 ~ 2023-11-30 19:41  
2614
전자결제   3996  2023-11-23 19:53  
2613
PHP   2883  2023-11-20 10:56 ~ 2023-11-20 11:14  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.