반응형

 

Jasypt  소개

 

Jasypt(Java Simplified Encryption)는 자바 언어용으로 설계된 간단한 암호화 도구입니다.

이 도구는 주로 개발자가 데이터를 보호하고 보안을 강화하기 위해 사용됩니다.

Jasypt는 다양한 암호화 기술을 제공하며, 주로 데이터베이스 비밀번호, 사용자 인증 정보, 설정 파일 등을 보호하는 데 사용됩니다.

 

Jasypt 주요 특징


1. 간단한 사용법: Jasypt는 사용하기 쉽고 간단한 API를 제공하여 개발자가 쉽게 암호화 및 복호화를 수행할 수 있습니다.

2. 다양한 알고리즘 지원: Jasypt는 다양한 암호화 알고리즘을 지원합니다. 이는 강력한 보안을 위해 필요한 경우에 선택할 수 있습니다.

3. 다양한 통합 옵션: Jasypt는 다양한 플랫폼과 프레임워크에서 사용할 수 있습니다. 예를 들어, Spring Framework와의 통합이 강력하며, 설정 파일에서 암호화를 쉽게 처리할 수 있도록 지원합니다.

4. 다양한 운영 환경 지원: Jasypt는 Java EE 및 Java SE와 같은 다양한 자바 기반 환경에서 사용할 수 있습니다.

5. Jasypt의 기본 동작은 텍스트 기반의 데이터를 암호화하고 복호화하는 데에 초점을 맞추고 있습니다. 예를 들어, 데이터베이스 연결 문자열이나 프로퍼티 파일에 저장된 비밀번호를 암호화하여 보안을 강화할 수 있습니다.

예를 들어, Spring에서 Jasypt를 사용하여 설정 파일에서 암호화된 비밀번호를 관리할 수 있습니다. 이를 통해 개발자는 민감한 정보를 안전하게 보호할 수 있습니다.

 

 

Jasypt 사용 예

 

1. 의존성 추가 : pom.xml 파일에 Jasypt의 의존성을 추가합니다.

<dependency>
    <groupId>org.jasypt</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>

 

 

 

 

2. Configuration 작성 : 복호화 하기 위한 설정을 합니다.

package co.kr.api.config;

import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimplePBEConfig;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.jasypt.salt.RandomSaltGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Configuration
@Component
@PropertySource("classpath:application.properties")
public class JasyptConfig {

	@Autowired
	private Environment environment;

	@Bean("jasyptStringEncryptor")
	public StringEncryptor stringEncryptor() {
		
		SimpleStringPBEConfig config = new SimpleStringPBEConfig();
		config.setPassword(environment.getProperty("pwdKey")); // 암호화 키 (암호화 키의 옵션값 - JVM 옵션)
		config.setAlgorithm("PBEWithMD5AndDES"); // 암호화 방식
		config.setKeyObtentionIterations("1000"); // 암호화 키를 얻기위해 반복해야하는 해시 횟수
		config.setPoolSize("1"); // 암호화 요청의 pool 크기 (설정하지 않을 경우 NULL)
		config.setProviderName("SunJCE");
		config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
		config.setStringOutputType("base64"); // 암호화 이후 어떤 형태로 값 받을지
		((SimplePBEConfig) config).setSaltGenerator(new RandomSaltGenerator());
        
        	PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
		encryptor.setConfig(config);
		return encryptor;
	}
}

 

 

 

 

3. 암호화 값 생성 : 암호화 된 문자열을 생성하기 위한 Class 입니다.

package co.kr.api.util;

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;

public class JasyptConfigUtils {

	public static String jasyptEncoding(String value) {
		String key = "password"; // 암호화 키
		StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
		pbeEnc.setAlgorithm("PBEWithMD5AndDES");
		pbeEnc.setPassword(key);

		return pbeEnc.encrypt(value);
	}

	public static void main(String[] args) {
		String dbPwd = "암호화 할 대상";
		System.out.println(jasyptEncoding(dbPwd));
	}
}

 

main 함수 실행 : 해당 class 에서 오른쪽 마우스 우클릭 - Java Application 선택 - Console에서 값 확인

 

 

 

 

4. 암호화 문자열 추가 : application.properties 또는 application.yml 파일에 암호화 관련 설정을 추가합니다.

 - 원본 값 대신에 ENC(암호화된문자열) 형식으로 속성 값을 설정합니다.

 - Jasypt는 해당 값을 암호화하고 자동으로 복호화하여 사용합니다.

# DB 비밀번호 
spring.datasource.password=ENV(jYEEDA4/mHdSKBdVos20gxj6nKzQFD/WJjREjfCo5OE=)

 

 

 

 

5. Spring Boot 실행 : JVM 속성값으로 암호화 KEY를 가져와 실행합니다.

프로젝트 우클릭 - Run As - Run Configurations - 해당 프로젝트의 VM arguments에 작성

 

728x90
반응형
반응형

 

 

 

 



畵龍點睛
화룡점정

 

 

 


'용을 그린 다음 마지막에 눈동자  점을 찍는다' 라는 뜻으로

어떤 일에 중요한 부분을 완성했을  때 사용하는 말입니다.

 

 

 

 

728x90
반응형
반응형

 

 

 

 

月下老人
월하노인

 

 


'달빛 아래노인 '이란 뜻으로

혼인을 중매하는 사람을 말합니다 .
중국의 혼인을 관장하는 신을 월노 라고 부르며 

인연이 있는 두 남녀 발에 붉은 실을 묶어 

부부의 연을 만들어 준다는 전설이 있습니다 .

 

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 


小貪大失
소탐대실

 

 

 


'작은 것을 탐하다가 큰 것을 잃는다.'라는 뜻으로

작은 이익에 눈이 멀어

나라까지 잃은 촉나라 왕의 이야기에

유래 된 것입니다.

 

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

朝 三 暮 四
조 삼 모 사

 

 

 


'아침에 3개 저녁에 4개' 라는 뜻으로

눈앞에 보이는 차이만 알고

그 결과가 같음을 모르는

어리석은 상황을 비유적으로 말할때 사용합니다.

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

苦 盡 甘來
고진감래

 

 

 

 

 

 

 

 

'쓴 것이 다하면 단 것이 온다' 라는 뜻으로 
'고생 끝에 낙이 온다' 

또는

 '힘든 일이 지나면  좋은 일이 온다' 

라는 뜻으로 사용되는 말입니다 
인생의 쓴맛을 알아야 인생의 단맛 역시 알 수 있지 않을까요?

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

 

愚公移山
우공이산

 

 

 

"우공이 산을 옮긴다" 라 는 뜻으로 

불가능해 보이는 일이라도 끝까지 노력한다면 

언젠가는 그것을 이룰 수 있다는 

뜻으로 사용하는 말입니다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

 

 

金枝玉葉
금지옥엽

 

 

 


'금으로 만든 가지와 옥으로 만든 잎'을 뜻하며

이런 물건들은 아마도 굉장히 소중하고 귀한 물건을 뜻합니다.

이처럼 귀한 금지옥엽의 사전적 의미는

임금의 자손이나 집안을 말하며

보통 귀한 자손들을 표현할 때 사용하는 말입니다.

 

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts