[Spring] Jasypt를 이용한 암호화

unhak·2022년 10월 26일
0

Spring

목록 보기
1/3
post-thumbnail

Jasypt란?

Jasypt는 Java, Java+Spring, Java+Hibernate 등 여러 프레임워크에서 암복호화를 지원해주는 오픈소스로 개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있는 Java 라이브러리이다.


Jasypt 기본 세팅

pom.xml 의존성 추가

<dependency>
    <groupId>org.jasypt</groupId>
    <artifactId>jasypt-spring31</artifactId>
    <version>1.9.2</version>
</dependency>

Spring Context 설정

context에 복호화를 위한 bean 객체 3개를 만든다.

<beans:bean id="encryptorConfig" class="org.jasypt.encryption.pbe.config.EnvironmentPBEConfig">
  <beans:property name="algorithm" value="PBEWithMD5AndDES" />
  <beans:property name="passwordEnvName" value="TEST_KEY" />
</beans:bean>

<beans:bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
  <beans:property name="config" ref="encryptorConfig" />
</beans:bean>

<beans:bean class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
  <beans:constructor-arg ref="encryptor" />
  <beans:property name="locations">
    <beans:list>
      <beans:value>classpath:config/db-context-loc.properties</beans:value>
    </beans:list>
  </beans:property>
</beans:bean>

위에 encryptorConfig를 보면 algorithm과 passwordEnvName이 있다.

  • algorithm
    : 암/복호화 알고리즘이다. 암호화 할 때 쓴 알고리즘 이름을 넣어야 한다.

  • passwordEnvName
    : 암,복호화에 필요한 key password를 지정한 키 값으로 key는 자기마음대로 생성이 가능하다.

application.properties 추가

db.driver=com.mysql.jdbc.Driver
db.url=ENC(dA5m1XXzMMqixudUjoPtve6hSrKnNgDnG6yXytBcnoSzPx46zNl32Q7y1gvI3jMB)
db.username=ENC(X3scraZNomhTtGD8QAndPw==)
db.password=ENC(eGaAQsn3ejXTMusZjl78sg==)

암호화 시킬 구문은 ENC( .... ) 로 작성하였다.


암호화 문자열 생성

암호화 문자열 생성 방법에는 실행파일로 생성하는 방법과 코드로 생성하는 방법 2가지가 있다.

실행파일로 생성

  1. http://www.jasypt.org/download.html 로 가서 Jasypt를 다운로드 받고 압축을 푼다.

  2. 해당 폴더의 /bin 으로 들어가 cmd 를 열고 아래와 같이 입력한다.

    encrypt input="암호화할 값"
    password="암호화 키"
    algorithm="PBEWITHMD5ANDDES"

위에 내용과 bean을 만들 때 입력했던
< property name="algorithm" value="......" />
부분은 동일해야 한다.

코드로 생성

실행파일로 생성했던 부분과 달리 별도의 다운로드 과정이 없고 아래와 같이 테스트코드를 작성해서 구현하면 된다.

StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
standardPBEStringEncryptor.setPassword("TEST_KEY");
String encodedPass = standardPBEStringEncryptor.encrypt("1q2w3e4r!!");
System.out.println("Encrypted Password for admin is : "+encodedPass);

참고 자료

profile
slowly but steadily🐢

0개의 댓글