본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 13일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 13일차로, 하마터면 챌린지를 깜빡할 뻔해서 제출 1시간 남겨 놓고 부랴부랴 열공했습니다!

 

오늘 배울 내용은,

Part A. 로그인, 로그아웃, 회원가입으로 배워보는 스프링 시큐리티 기초

Ch 4. PasswordEncoder 와 암호 처리

"02. 암호화 모듈" 입니다.


 

암호화 모듈은 키를 생성하거나 암호화/복호화를 하는 기능은 자바 자체적으로 제공하지 않는 기능이다. 따라서 관련 라이브러리를 직접 추가해야 하는 불편함이 존재했다.

스프링 시큐리티암호화 모듈 (SSCM) 에서는 해당 기능을 별도로 제공한다. 키 생성기는 해싱 및 암호화 알고리즘을 위한 키를 생성하는 객체이며, 암호기는 데이터를 암호화 및 복호화하는 객체이다.

키생성기는 특정한 종류의 키를 생성하는 객체로 일반적으로 암호화나 해싱 알고리즘에 필요하다.

스프링 시큐리티에서 제공하는 키 생성기 인터페이스는 다음과 같다. BytesKeyGenerator 와 StringKeyGenerator.

StringKeyGenerator 에 대해 알아보면,
문자열 키생성기를 이용해 문자열 키를 얻을 수 있다. 이 키를 기반으로 해싱 또는 알고리즘의 솔트(salt) 값으로 이용할수 있다. StringKeyGenerator 는 generateKey() 메소드를 제공한다.

BytesKeyGenerator 에 대해 알아보면,
byte[] 키를 반환하며 키 값의 길이를 반환하는 기능을 제공한다.

BytesKeyGenerator 는 generatKey() 메소드 뿐만 아니라 getKeyLength() 메소드를 제공한다. generatKey() 가 호출될 때마다 고유한(unique) 키 값이 생성된다.

 

다음으로 암호기에 대해 알아보면,

암호기는 암호화 알고리즘을 구현하는 객체이다. 암호화와 복호화는 보안을 위해 꼭 필요한 기능으로 애플리케이션에서 암호기를 많이 사용한다. 암호화는 서버 간 통신에서 데이터를 전송하거나 저장을 할 때 사용되는 경우가 많다. 스프링 시큐리티에서는 다음과 같이 두 유형의 암호기가 정의되어 있다. BytesEncryptor 와 TextEncryptor. 역할은 비슷하지만 다른 데이터 형식을 처리함에 있어 다르다.

TextEncryptor 는 두 개의 메소드를 제공하며, 암호화를 나타내는 encrypt() 와 복호화를 나타내는 decrypt() 가 있으며, BytesEncryptor 는 TextEncryptor 와 비슷하게 encrypt() 메소드와 decrypt() 메소드를 제공하며, 인풋과 아웃풋에서 차이가 있다는 것을 알 수 있었다.