본문 바로가기
개발/SpringBoot

SpringBoot Jsaypt 사용 application.yml 암호화

by 궁즉변 변즉통 통즉구 2021. 12. 3.
반응형

Jsaypt(Java Simplified Encryption) 암호화 라이브러리 적용 테스트

 

기본 사용

Maven Dependency 추가

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

 

라이브러리 테스트

@RunWith(SpringRunner.class)
@SpringBootTest
public class JasyptTest {

    Logger log = (Logger) LoggerFactory.getLogger(JasyptTest.class);

    @Test
    public void simpleEncTest() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("123456");
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setPoolSize(1);
        encryptor.setConfig(config);

        String str = "testString";
        String encStr = encryptor.encrypt(str);
        String decStr = encryptor.decrypt(encStr);

        log.info("str : {}, encStr : {}, decStr : {}", str, encStr, decStr);
    }
}

결과

 

위에 방법은 saltGenerator를 지정하지 않았기 때문에 암호화된 값이 매번 다른 값으로 생성됨

(RandomSaltGenerator를 default로 사용)

 

Salt고정

@Test
public void fixSaltEncTest() {
  PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
  SimpleStringPBEConfig config = new SimpleStringPBEConfig();
  config.setPassword("123456");
  config.setAlgorithm("PBEWithMD5AndDES");
  config.setSaltGenerator(new StringFixedSaltGenerator("fixedTestSalt"));
  config.setPoolSize(1);
  encryptor.setConfig(config);

  String str = "testString";
  String encStr = encryptor.encrypt(str);
  String decStr = encryptor.decrypt(encStr);

  log.info("str : {}, encStr : {}, decStr : {}", str, encStr, decStr);
}

 

SpringBoot 적용

Confuguration 설정

@Configuration
public class JasyptConfig {
    @Bean("jasyptStringEncryptor")
    public StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("123456");
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setPoolSize(1);
        encryptor.setConfig(config);
        return encryptor;
    }
}

 

위에 생성된 암호화 결과를 application.yaml에 적용

test:
  enc: ENC(5ayFSQxOrp5oaRQmzxUzuFKFsekFt1AG)

 

필요한 곳에서 가져다 쓰기

 @Value("${test.enc}")
 private String encValue;

 @Test
 public void testGetValue(){
     log.info(encValue);
 }
반응형

댓글