본문 바로가기

Server Development/Spring Basic

Spring - Jasypt

 

JASYPT

- 프로젝트에 간단한 암호화 기능을 제공해주는 JAVA 라이브러리 이다.

- 단방향, 양방향 암호화 기능을 제공한다.

- 스프링과 같은 싱글톤 환경에서 멀티스레드의 동기화 문제 걱정없이 사용 가능.

(여러개의 스레드가 하나의 자원에 동시에 접근할 때 생기는 문제가 없다.)

- 다양한 언어를 지원해 원본 문자 사용에 대한 제약이 없다.

(인코딩에 대한 제약이 없다, 즉, 한글을 암호화하는 것도 가능하다.)

 

 

 

 

1. Dependancy 설정

 

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

 

 

2. Config 클래스 설정

 

package com.ReservationServer1.config;

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(name = "jasyptStringEncryptor") // 주입을 위한 빈 이름 설정
  public StringEncryptor stringEncryptor() {
    String password = "testPassword"; // 실제로는 @Value로 설정후 jar 배포시 주입받는 형태
    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
    SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    config.setPassword(password); // 암호화할 때 사용하는 키
    config.setAlgorithm("PBEWithMD5AndDES"); // 암호화 알고리즘
    config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수
    config.setPoolSize("1"); // 인스턴스 pool
    config.setProviderName("SunJCE");
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스
    config.setStringOutputType("base64"); // 인코딩 방식

    encryptor.setConfig(config);
    return encryptor;
  }

}

 

 

3. Properties 설정

# Jasypt
jasypt.encrytor.bean = jasyptStringEncryptor

 

 

이 후, 원하는 아이디나 비밀번호에 ENC(암호화 결과)이런식으로 암호화를 하면 된다.

또한 Config는 설정을 위한 파일로 파일의 용도는 복호화 용도로 쓰이는데, 따라서 암호화는 직접해야 한다.

밑에 사이트에 들어가 양방향 암복호화를 선택하고 키를 입력하고 암호화하려는 내용을 입력하면 암호화된 내용을 받을 수 있다. 이 후, 코드에 작성하면 된다.

 

https://www.devglan.com/online-tools/jasypt-online-encryption-decryption

 

Programming Blog Article Feeds as per your Interest | DevGlan

Best programming article feeds as per your Interest on different technologies. Subscribe to any technology and explore the best articles from around the web.

www.devglan.com

 

 

'Server Development > Spring Basic' 카테고리의 다른 글

Spring - Spring Security  (0) 2023.04.23
Spring - Interceptor  (0) 2023.04.06
Spring - Multiple Requests, Threads  (0) 2023.04.05
Spring - AOP  (0) 2023.04.02
Spring - Exception  (0) 2023.04.01