반응형
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);
}
반응형
'개발 > SpringBoot' 카테고리의 다른 글
Jacoco 동적 분석 테스트 및 Jenkins 연동 (0) | 2021.12.08 |
---|---|
java 어플리케이션 실행 시 JVM args(JAVA_OPTS) 적용 (0) | 2021.12.08 |
SpringBoot jar를 타 프로젝트에 Dependency 라이브러리로 추가 (0) | 2021.12.03 |
SonarQube 설치 및 구성 (0) | 2021.11.30 |
SpringBoot Scouter APM 구성 (0) | 2021.11.30 |
댓글