본문 바로가기
spring

java spring properties 파일 password 암호화하는 방법

by alwaysky 2023. 3. 15.

java spring properties 파일 password 암호화하는 방법
Spring Boot에서는 Jasypt(Java Simplified Encryption)를 사용하여 properties 파일의 비밀번호 또는 민감한 데이터를 암호화할 수 있습니다.

먼저, Spring Boot 프로젝트에 Jasypt 의존성을 추가합니다.
Maven의 경우:

xml
Copy code
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>
Gradle의 경우:

groovy
Copy code
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
Jasypt CLI를 사용하여 암호화하려는 값을 암호화합니다.
Jasypt CLI 다운로드: http://www.jasypt.org/download.html

다운로드 후 압축을 해제하고, 터미널에서 Jasypt 디렉토리로 이동한 다음 다음 명령을 실행합니다.

python
Copy code
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="비밀번호" password=암호화_키 algorithm=PBEWithMD5AndDES
위의 명령에서 "비밀번호"를 암호화하려는 실제 비밀번호로 대체하고, "암호화_키"를 사용자 지정 암호화 키로 대체합니다.

명령을 실행한 후에, 출력 결과로 암호화된 비밀번호를 얻을 수 있습니다.

암호화된 비밀번호를 사용하여 properties 파일에 저장합니다.
예를 들어, application.properties 파일에 데이터베이스 비밀번호를 암호화하여 저장하려면 다음과 같이 작성합니다.

scss
Copy code
spring.datasource.password=ENC(암호화된_비밀번호)
"암호화된_비밀번호"를 앞에서 생성한 암호화된 비밀번호로 대체합니다.

암호화 키를 Spring Boot 애플리케이션에 전달합니다.
프로젝트의 src/main/resources 폴더에 bootstrap.properties 파일을 생성하고 다음을 추가합니다.

Copy code
jasypt.encryptor.password=암호화_키
"암호화_키"를 사용자 지정 암호화 키로 대체합니다.

이제 Spring Boot 애플리케이션은 properties 파일에서 암호화된 값을 사용하게 됩니다. 애플리케이션 코드에 변경 사항을 적용할 필요가 없으며, Jasypt가 자동으로 암호화된 값을 해독하여 사용합니다.