HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏗️
Tech Store
/
🔒
Jasypt로 설정 암호화 하기
🔒

Jasypt로 설정 암호화 하기

담당자들
카테고리
Skill
주제
프로젝트 설정 정보 관리
나의 블로그
https://velog.io/@pjh612/Jasypt%EB%A1%9C-%EC%84%A4%EC%A0%95-%EC%95%94%ED%98%B8%ED%99%94-%ED%95%98%EA%B8%B0
완료율%
프로젝트
인스타뀨램
상태
완료
Jasypt는 public한 곳에 애플리케이션을 배포할 때 DB 계정이나 중요 비밀 키 값들이 평문으로 그대로 저장되어 올라가는 것을 막기 위해 프로퍼티를 간단하게 암호화할 수 있는 라이브러리입니다.
 

준비

  • 의존성 추가
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
 
  • Bean 설정
    • encryptor.key를 환경 변수로 등록해 암/복호화 할 때 사용하는 키 값으로 사용합니다.
@Configuration @Profile({"dev","real"}) public class JasyptConfig { @Value("${encryptor.key}") private String password; @Bean("jasyptStringEncryptor") public StringEncryptor stringEncryptor() { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(password); config.setAlgorithm("PBEWithMD5AndDES"); config.setKeyObtentionIterations("1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator"); config.setStringOutputType("base64"); encryptor.setConfig(config); return encryptor; } }
 
저는 instakyuram으로 패스워드를 설정했습니다.
notion image
 

평문 → 암호문

  • 아래 사이트에 접속해 키 값을 통해 암/복호화 할 수 있습니다.
    • https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
 
  • instakyuram의 설정 일부분을 암호화 해서 정상적으로 실행이 되는지 확인해보겠습니다.
datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: password url: jdbc:mysql://localhost:3306/kyuram
 
root -> oYO/9DBKBBCkp9If+M0cgA== password -> qK5ua96GDU0kmcOu4N8+yRmFESxjLpqz jdbc:mysql://localhost:3306/kyuram -> 2JvUMlda7+XaxKznD63C+6p1KpOgGpWS5MmCkCfP0yWLByds0eM6nrP/svKlbEsP
 
암호화된 데이터는 ENC(암호화 데이터) 와 같이 암호화 되었다는 표시를 해줘야합니다.
spring: config: activate: on-profile: dev datasource: driver-class-name: com.mysql.jdbc.Driver username: ENC(oYO/9DBKBBCkp9If+M0cgA==) password: ENC(qK5ua96GDU0kmcOu4N8+yRmFESxjLpqz) url: ENC(2JvUMlda7+XaxKznD63C+6p1KpOgGpWS5MmCkCfP0yWLByds0eM6nrP/svKlbEsP)
 

실행

JPA를 의존성에 추가하고 application.yml에 JPA 설정을 추가하고 애플리케이션을 실행해봅니다.
 
JPA를 의존성에 추가하면 DB Connection이 제대로 이루어지지 않는다면 애플리케이션은 실행되지 않을 것 입니다.
 
  • 정상적으로 암호문을 입력했을 때 → 정상적으로 실행 되었습니다.
spring: config: activate: on-profile: dev datasource: driver-class-name: com.mysql.jdbc.Driver username: ENC(oYO/9DBKBBCkp9If+M0cgA==) password: ENC(qK5ua96GDU0kmcOu4N8+yRmFESxjLpqz) url: ENC(2JvUMlda7+XaxKznD63C+6p1KpOgGpWS5MmCkCfP0yWLByds0eM6nrP/svKlbEsP) jpa: show-sql:true hibernate: ddl-auto: none generate-ddl:false defer-datasource-initialization:true
notion image
 
  • 임의로 암호문을 망가뜨렸을 때 → 실행되지 않습니다.
notion image
notion image