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,635건 1 페이지
  • RSS
기술자료 목록
2635
영카트   176  2024-10-21 13:44 ~ 2024-10-21 19:42  
2634
전자결제   350  2024-09-05 09:30  
2633
MySQL   867  2024-03-29 14:14 ~ 2024-03-29 14:14  
2632
그누보드   1082  2024-02-23 18:40 ~ 2024-02-24 06:13  
2631
JavaScript   1206  2024-02-16 18:50 ~ 2024-02-16 20:37  
열람
Java   1135  2024-02-06 16:49  
2629
PHP   1313  2024-02-06 16:42  
2628
호스팅   1159  2024-01-29 12:54  
2627
PHP   1228  2024-01-26 11:04 ~ 2024-01-26 11:13  
2626
MySQL   1430  2024-01-08 17:37 ~ 2024-03-14 16:00  
2625
SQL   1510  2024-01-08 12:36  
2624
영카트   1602  2024-01-04 14:57  
2623
일반   2512  2023-12-15 18:33  
2622
Android   2022  2023-11-30 18:48 ~ 2023-11-30 19:41  
2621
전자결제   3940  2023-11-23 19:53  
2620
PHP   2844  2023-11-20 10:56 ~ 2023-11-20 11:14  
2619
Linux   2282  2023-11-09 19:55  
2618
그누보드   2255  2023-11-06 20:38  
2617
Linux   2204  2023-11-01 21:41 ~ 2023-11-02 10:30  
2616
영카트   2116  2023-10-07 23:31  

검색

해피정닷컴 정보

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

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