Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 자신의 프로젝트에 기본 암호화 기능을 추가할 수 있도록 하는 Java 라이브러리이다.
간편하게 단방향 및 양방향 암호화 기술을 제공
스레드로부터 안전함
- 스프링 같은 싱을톤 환경엣허 동기화 걱정 없이 사용할 수 있음
원본 문자 집합에 대한 제약없이 사용 가능함
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter'
@Configuration
public class JasyptConfig {
private String encryptKey="키 입력하는곳";
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor(){
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(encryptKey); //암호화할 때 사용하는 키
config.setPoolSize("1"); //인스턴스 pool
config.setAlgorithm("PBEWithMD5AndDES"); //암호화 알고리즘
config.setStringOutputType("base64"); //인코딩 방식
config.setKeyObtentionIterations("1000"); //반복할 해싱 회수
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
//salt 생성 클래스
encryptor.setConfig(config);
return encryptor;
}
}
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class JasyptTest {
@Test
void encryptTest(){
String id = "root";
String password = "106715";
System.out.println("id="+jasyptEncoding(id));
System.out.println("pw="+jasyptEncoding(password));
}
public String jasyptEncoding(String value) {
String key = "키 입력하는곳";
StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
pbeEnc.setAlgorithm("PBEWithMD5AndDES");
pbeEnc.setPassword(key);
return pbeEnc.encrypt(value);
}
}
spring.datasource.hikari.username=ENC(ySwZh8OrocEHtDS0Yr20Og==)
spring.datasource.hikari.password=ENC(SimrvaA1I3piKfyxUMu4ww==)
jasypt.encryptor.bean=jasyptStringEncryptor