jasypt-spring-boot
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: 사용할 키