Jasypt

방세현·2023년 3월 27일
0

etc

목록 보기
1/3

Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 자신의 프로젝트에 기본 암호화 기능을 추가할 수 있도록 하는 Java 라이브러리이다.

특징

  • 간편하게 단방향 및 양방향 암호화 기술을 제공

  • 스레드로부터 안전함
    - 스프링 같은 싱을톤 환경엣허 동기화 걱정 없이 사용할 수 있음

  • 원본 문자 집합에 대한 제약없이 사용 가능함

  1. build.gradle 설정
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter'
  1. config 폴더에 JasyptConfig 파일 생성 및 (아래의)코드 추가
@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;
    }
}
  1. test코드 추가
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);
    }

}
  1. application.property 추가
spring.datasource.hikari.username=ENC(ySwZh8OrocEHtDS0Yr20Og==)
spring.datasource.hikari.password=ENC(SimrvaA1I3piKfyxUMu4ww==)

jasypt.encryptor.bean=jasyptStringEncryptor

0개의 댓글