본문 바로가기
Programming Language/JAVA

[JAVA] Jasypt 관련... 운영체제(window/mac,linux)에 따른 암호화(encrypt) / 복호화(decrypt) 문제

by hwan20c 2022. 10. 31.

 jasypt 라는 라이브러리가 있는데 이는 프로젝트내에 프로퍼티(application.yml ~.properties 등)를 암호화하는 라이브러리 중에 하나이다.

 

회사 컴퓨터는 window환경에서 코딩하고, 집에서는 맥북을 사용하는데,

 

회사에서 jasypt관련 class들을 짠 뒤에, 암호화키를 따로 텍스트에 저장해서 읽어오는 기능까지 만든 후에 잘 동작하는걸

 

확인하고, 주말에 집에 있는 맥북에다가 git pull 을 해서 사용하려고 하니,

 

jasypt 관련 에러 때문에 프로퍼티들이 읽히지 않았다...

 

"뭐가 문제지?" 하면서 처음에는 해당 글자(윈도우에서 암호화된 문자)들을 복호화했는데,

EncryptionOperationNotPossibleException

위와같은 에러가 나면서 안 되는 것이였다.

 

그래서 뭔가 이상하다하고, 클래스내에서 같은 plain text를 암/복호화를 실행했는데, 거기서는 또 잘 되는 것이였다.

 

시험을 해보니, 맥북에서 plain text를 암호화한  encrypted text를 다시 같은 키로 복호화를 할때는 잘되는 반면,

 

윈도우에서 plain text를 암호화한 encrypted text를 맥북에서 복호화를 진행하려고 하니 안 되었던 것이다.

 

그래서 구글링해서 찾다보니, 윈도우랑 리눅스계열에서 특수문자를 읽는 방식이 다르다고 나와있었다.

 

그래서 암호화시에 패스워드나 평문에 특수문자가 들어가 있으면 양방향(windows/linux) 암복호화가 안 된다는 것이였다.

 

예전에 회사에서 쓸때는 mac환경에서 암호화후에 linux 서버로 올렸기 때문에 아무 문제가 없었는데,

 

윈도우 환경에서 암호화후에 mac에서 하려니까 복호화시에 에러가 계속 나는것이였다..

 

그래서 해결한 방법은

 

1. 암복호화시에 특수문자를 안 쓰는 방법

 

2. 프로퍼티 파일을 .gitignore에 등록하고, window와 mac에 각각의 프로퍼티를 만드는것.

 

을 떠올렸는데, 첫번째 특수문자를 안쓰는방법은 좀 상대적으로 봤을때 별로인 것 같아서 혹은 특수문자가 들어가 있는 plain text가 있을 수 있으니까... 피하기로 하였고,

 

2번째 방법을 선택 하기로했다.(어차피 올라가 있는 서버도 리눅스환경)

 

아직 방법만 생각하고 실행은 하지 않았는데, 잘 되지 않을까 싶다.(회사에 맥북을 들고가기에 너무 무겁다.)

 

이렇게 했는데 안 되면 다시 방법을 찾아볼 예정..

'Programming Language > JAVA' 카테고리의 다른 글

[JAVA] optional<String> 관련  (0) 2022.10.12

댓글