[Spring/Legacy] Jasypt Library를 이용한 DB 계정 정보 암호화

[Spring/Legacy] Jasypt Library를 이용한 DB 계정 정보 암호화

프로젝트를 진행하다보면 낮은 버전의 JDK를 사용해야 할 때가 있다.

이 때, DB 계정 정보를 빠르게 암호화할 수 있는 방법이 있다.

바로 Jasypt 라이브러리를 이용하는 것이다.

버전 정보 낮은 버전의 JDK 1.8 버전

(https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html) 예 ) 1.8.0_151 등 jasypt-1.9.2 jasypt-1.9.2-dist.zip (SOURCE FORGE에서 다운로드) IDE Eclipse

[ 프로젝트 적용 순서 ]

1. 시스템 환경 변수 설정이 되어 있어야 한다( 기존 환경 변수가 낮은 버전이 아니라면 )

2. jasypt-1.9.2-dist.zip을 압축해제한다

3. 명령 프롬프트(cmd) 창을 열고, 압축 해제한 jasypt 폴더의 bin폴더로 경로를 설정한다.

예 ) cd C:\Downloads\jasypt-1.9.2-dist\jasypt-1.9.2\bin

아래와 같이 암호화 작업을 한다 (복호화는 확인 용도)

① 암호화 *

encrypt input=“암호화할 값” password=“키 값” algorithm=“적용할 암호화 알고리즘” 입력 (예 : encrypt input=“test“ password=“test“ algorithm=“PBEWITHMD5ANDDES“)

ENVIRONMENT 적용된 JAVA 버전 ARGUMENTS 입력 값 OUTPUT 암호화 값

==> ARGUMENTS(INPUT) 값과 OUTPUT 값을 기억 !!! **

② 복호화(확인용)

decrypt input=“복호화할 값” password=“키 값” algorithm=“적용할 암호화 알고리즘” 입력 (예 : decrypt input=“MkeTNSesdm35edc2“ password=“test“ algorithm=“PBEWITHMD5ANDDES“)

4. 프로젝트 적용

ⓐ pom.xml에 dependency 추가

org.jasypt jasypt-spring31 1.9.2

ⓑ 내용 변경

(Property가 따로 있다면 Property에서 ENC(암호화 값) 으로 변경 하면 된다)

//암호화한 OUTPUT 값 //Url 전체 암호화 가능

ⓒ dataSource bean이 위치한 xml파일(예 : context-datasource.xml)에 Jasypt 설정을 추가 ***

정상 동작 확인 !!!

==========================================================================

* : cmd창에서 bin 폴더로 경로 변경 후, listAlgorithms 명령어 실행 시 적용 가능한 알고리즘 종류 확인이 가능하다.

암/복호화 시 OUTPUT에 'java.lang.ExcpetionInitializerError' 에러 출력 시 JDK 버전이 맞지 않아 발생하는 문제이다.

** : 콘솔창 붙여넣기 단축키는 ' SHIFT + INSERT '

*** : 암호키 값을 숨기는 방법

ⓐ 위의 프로퍼티에서 직접 암호키(test)를 적었던 내용을 다음과 같이 변경

ⓑ Package Explorer 창에서 우클릭 -> Run As -> Run Configurations -> 현재 사용 중인 Tomcat 선택 -> Environment -> New... ->

Name : APP_ENCRYPTION_PASSWORD Value : 암호키 값(예 : test)

적용 후 동작 확인

추가) Linux 서버 적용 방법

ⓐ 톰캣 경로의 bin 폴더에서 setenv.sh 파일을 생성한다

ⓑ export APP_ENCRYPTION_PASSWORD=암호키 값 을 적어주면 된다

from http://devlifetestcase.tistory.com/9 by ccl(A) rewrite - 2021-12-23 11:27:48