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 |
---|
댓글