Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.
Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식이 없어도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있는 자바 라이브러리입니다.
쉽게 말해 Java 프로젝트 내에 작성된 .properties 파일(설정 파일) 등을 암호화 하기 위한 Java 라이브러리이다.
application.yml 의 설정값을 가져오기 위해 @Value 어노테이션을 사용한다.
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
Jasypt를 사용하기 위해 Bean 등록을 한 메서드를 보면 return 이 StringEncryptor 이다.
StringEncryptor 는 Jasypt 공식 홈페이지에서 설명은 아래와 같다.
"Common interface for all Encryptors which receive a String message and return a String result."
"String 메시지를 수신하고 String 결과를 반환하는 모든 Encryptor에 대한 공통 인터페이스입니다."
라고 한다.
StringEncryptor는 인터페이스이며 StringEncryptor 인터페이스를 구현한 클래스는 아래와 같다.
위를 살펴보면 여러가지의 구현한 인터페이스 및 클래스들이 있다.
우리가 사용하는 PooledPBEStringEncryptor 는 PBEStringCleanablePasswordEncryptor 인터페이스를 구현했다.
PBEStringCleanablePasswordEncryptor 인터페이스는 아래와 같이 설명되어 있다.
Common interface for all Password Based Encryptors which receive a String message and return a String result, and provide means to set passwords ascleanablechar[] objects (instead of immutable Strings).
For a default implementation, see StandardPBEStringEncryptor
문자열 메시지를 수신하고 문자열 결과를 반환하고 암호를 변경 불가능한 문자열 대신 청소 가능한char[] 개체로 설정하는 수단을 제공하는 모든 암호 기반 암호화기에 대한 공통 인터페이스입니다 .
기본 구현에 대해서는 StandardPBEStringEncryptor 를 참조하십시오
위 내용과 같이 기본 구현은 StandardPBEStringEncryptor 클래스라고 한다.
StandardPBEStringEncryptor 클래스를 사용하여 암호화 할 수 있지만 PooledPBEStringEncryptor 클래스를
사용하는 이유는 pooling 이다.
PooledPBEStringEncryptor 클래스는 내부적으로 StandardPBEStringEncryptor 를 설정한 poolsize만큼