Jasypt Spring Boot provides Encryption support for property sources in Spring Boot Applications

1. 라이브러리 추가

<dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version>
</dependency>

2. 빈등록

@Configuration
public class JasyptConfig {

    @Bean(name = "jasyptStringEncryptor")   //	복호화할 때 사용할 빈
    public StringEncryptor stringEncryptor() {
	String jasyptkey = System.getenv("jasyptkey");
        final String key = jasyptkey;
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(key);
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setPoolSize("1");
        encryptor.setConfig(config);
        return encryptor;
    }
}

3. 암호화

public class JasyptTest {
	
  @Test
  public void testpass(){
    String encodedPass = encPass("db");   
    System.out.println(encodedPass);
  }

  public String encPass(String rawPass){
    String jasyptkey = System.getenv("jasyptkey");     //암호화할 때 사용할 키는 실행할 때 외부에서 주입
    StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
    standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
    standardPBEStringEncryptor.setPassword(jasyptkey);			 
    String encodedPass = standardPBEStringEncryptor.encrypt(rawPass); 
    return encodedPass;
  }
}

4. properties 파일에 패스워드 암호화된 값으로 변경

jasypt.encryptor.bean=jasyptStringEncryptor
  db.username=ENC(X3XXXX==)
  db.password=ENC(eGXXXX==)

5. run configuration에서 enviroment 추가

name: jasyptkey  value: 사용할 키