본문 바로가기

백엔드287

[Spring] AES 암호화를 CBC 모드로 구현하기 AES 대칭키 암호화 알고리즘   CBC (Ciper Block Chanining) Mode블록 암호화 알고리즘에서 데이터의 보안성을 높이기 위해 사용되는 운영모드 중 하나로 블록 암호화 운영 모드 중 보안성이 제일 높은 암호화 방법이다.CBC 주요 특징은 key 암호화 뿐만 아니라 초기화 벡터(IV) 라는 무작위 값과 XOR 연산을 수행해야 한다. 암호문이 블록의 배수가 되기 때문에 입력되는 평문 데이터가 블록 크기와 맞지 않으면 Padding(패딩)을 추가해서 처리해야 한다. 일반적으로 PKCS5Padding을 사용해 평문의 길이를 블록 크기의 배수로 맞춰준다.   사용 코드아래 코드는 AES CBC 모드를 사용하여 데이터를 암호화하고 복호화 하는 코드를 작성해두었다. Bearer 토큰을 통해 동적으.. 2024. 7. 30.
PKCS#5 패딩과 PKCS#7 패딩의 특징과 차이점 대칭키 블록 알고리즘대칭키 블록 알고리즘에서 데이터는 고정된 크기의 블록 단위로 암호화 된다. AES나 DES 같은 알고리즘은 128비트 블록 크기를 사용해야 한다. 암호화/복호화 시 입력 데이터는 정해진 블록 크기만큼 잘라서 처리해야 하는데블록 크기의 배수가 아닐 경우 데이터의 크기를 배수로 맞추기 위해서 패딩을 사용한다.  패딩(Padding)암호화할 때 데이터 값이 암호 블럭 사이즈의 배수와 맞지 않으면 배수에 맞춰 빈공간을 채워주는데 빈공간을 채워주는 방법을 패딩이라고 한다.   PKCS#5 패딩PKCS#5 는 8바이트 크기에 맞추기 위해 필요한 만큼의 바이트를 패딩 값으로 채우는 방식이다.  블록 크기를 맞추기 위해8바이트보다 적은 1바이트가 부족하다면 나머지 7바이트를 패딩 값으로 채운다. A.. 2024. 7. 18.
[Spring] 스프링 AOP 포인트컷 포인트컷 지시자 AspectJ 는 포인트컷을 편리하게 표현하기 위해 특별한 표현식을 사용한다. 포인트컷 표현식은 AspectJ가 제공하는 포인트컷 표현식을 줄여서 말하는 것으로execution 같은 포인트컷 지시자(Pointcut Designator, PCD)로 시작한다.  지시자 종류 execution : 메소드 실행 조인 포인트를 매칭한다. 스프링 AOP 에서 가장 많이 사용하고 기능도 복잡하다. within : 특정 타입 내의 조인 포인트를 매칭한다.args : 인자가 주어진 타입의 인스턴스인 조인 포인트this : 스프링 AOP 프록시를 대상으로 하는 포인트target : 스프링 AOP 프록시가 가리키는 실제 대상으로 하는 조인 포인트@target : 실행 객체의 클래스에 주어진 타입의 어노테이션.. 2024. 5. 21.
[Spring] Spring AOP 구현 예제 라이브러리 추가build.gradle 에 의존성 추가를 해준다. implementation 'org.springframework.boot:spring-boot-starter-aop'위의 라이브러리 추가로 aspectJ 관련 라이브러리를 등록하고 스프링 부트가 AOP 관련 클래스를 자동으로 스프링 빈에 등록해준다.  @Aspect 사용 예제스프링은 @Aspect 어노테이션으로 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원하며 어드바이저로 사용할 클래스에 @Aspect 어노테이션을 붙여줌으로써 스프링 AOP 를 적용할 수 있다. 주의할 점으로 스플이 AOP 적용시에는 private, final 메소드는 AOP 적용이 불가능하다. @Slf4j@Aspectpublic class As.. 2024. 5. 17.
[Spring] AOP 개념 및 용어 정리 AOP란Aspect-Oriented Programming , 관점 지향 프로그래밍이란 뜻으로 어떤 로직을 핵심적인 관점과 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 것이다. 부가 기능과 부가 기능을 어디에 적용할 지 선택하는 기능을 합해서 하나의 모듈로 만든 것을 Aspect라고 한다. 이 Aspect 를 사용한 프로그래밍 방식을 AOP 라고 한다. AOP는 OOP를 대체하기 위한 것이 아닌 횡단 관심사(하나의 부가 기능이 여러 곳에 동일하게 사용됨)를 깔끔하게 처리하기 어려운 OOP의 부족한 부분을 보조하는 목적으로 개발되었다. AOP 의 대표적인 구현으로는 AspectJ 프레임워크가 있다.  AOP 적용 방식적용 방식에는 크게  3가지 방식이 있다. 컴파일 시점클래스 로딩 시.. 2024. 5. 13.
[Spring] @Aspect란, 생성 과정 설명 @Aspect란 AOP(관점 지향 프로그래밍)를 가능하게 하는 AspectJ 프로젝트에서 제공하는 어노테이션이다.  @Aspect를 스프링 프록시에 적용하려면 어드바이저(Advisor)를 만들어서 스프링 빈으로 등록하면 된다. 그러면 자동 프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고 스프링 빈에 자동으로 프록시를 적용해준다.  @Aspect 프록시 예제  빨간 박스는 포인트컷 부분이고 초록색 박스는 어드바이스 부분이다.  @Aspect를 어드바이저로 변환해서 저장하는 과정 1. 실행 : 스프링 어플리케이션 로딩 시점에 자동 프록시 생성기를 호출한다. 2. 모든 @Aspect 빈 조회 : 자동 프록시 생성기는 @Aspect 어노테이션이 붙은 스프링 빈을 모두 조회한다. 3. 어드바이저 생성 :.. 2024. 5. 12.