JAVA Tip

Jasypt 이용한 properties DB 암호화

cookieangelo 2024. 3. 6. 13:19

Jasypt는 Java 언어로 작성된 간단하고 강력한 암호화 라이브러리입니다. 주로 설정 파일, 데이터베이스 비밀번호 및 다른 민감한 정보를 안전하게 저장하기 위해 사용됩니다. 이 라이브러리를 사용하면 쉽게 문자열을 암호화하고 복호화할 수 있습니다.

1. 의존성 추가 

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

maven 추가

 

dependencies {
  implementation("com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5")
}

build.gradle 추가

 

2. Jasypt 를 이용한 예제

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;

public class JasyptExample {
    public static void main(String[] args) {
        
        // 암호화 키 설정
        String password = "testJasypt";
        
        // Jasypt 암호화기 생성
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(password);
        jasypt.setAlgorithm("PBEWITHMD5ANDDES"); 

        // 암호화
        String dbUser = "user";
        String encryptedTextId = jasypt.encrypt(dbUser);
        

        System.out.println("Original Text: " + dbUser);
        System.out.println("Encrypted Text: " + encryptedTextId);

        // 복호화
        String decryptedTextId = jasypt.decrypt(encryptedTextId);
        System.out.println("Decrypted Text: " + decryptedTextId);
    }
}

 

3. properties db 암호화

암호화 적용전 properties 파일 DB 연결

 

Jasypt Bean 설정 

import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JasyptConfig {
    @Bean("jasyptEncryptor")
    public StringEncryptor stringEncryptor() {
 
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        
        config.setPassword("testJasypt"); // encrypt key
        
        config.setAlgorithm("PBEWITHMD5ANDDES");
        config.setPoolSize("1");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

 

application.properties  설정 추가 

jasypt.encryptor.bean=jasyptEncryptor

 

Jasypt Bean 설정  이후 properties 파일 

Jasypt 암호화 적용