[SQL] AES 전화번호 복호화시 [blob] 문제 해결하기

2022. 11. 16. 22:36·💻 개발/언어
728x90

먼저 비밀번호 복호화하는데 자바 진영이 아닌 SQL에서(mapper.xml) 처리를 했다. 

SQL에서 처리 했을 때의 장점은 자바에서 for문을 돌지 않아도 된다는 장점이 있다고 한다.

툴은 DBeaver를 사용했고 전화번호 복호화 작업을 하던 중

칼럼에 [blob]이 찍히는 것을 확인했고 위와 같은 문제를 알게 되어 공부하던 중 내용을 정리해보았다.

 

 

1. DTO에 저장하나? Map에 저장하나?


나같은 경우는 Mapper.xml에 선언한 쿼리의 리턴 값을  Map<String, Object> param 형식으로 저장했다.

key 값을 DTO에서 String 변수에 저장하면  SQL에서 나온 값에 대해 JAVA에서 형 변환을 해주어 문제가 되지 않았지만,

Map에 저장하다보니 형 변환에 문제가 발생하여 [Blob]이 발생했다. 

 

 

2. 해결방법


1. SQL에서 값을 가져올 때 SQL문에서 형 변환 처리를 해주거나

2. DTO로 값을 저장하거나 

 

 

CAST(REGEXP_REPLACE(AES_DECRYPT(UNHEX(m.mbl_no), #{aes_encrypt_key}), '[^0-9]', '') as varchar(100) character set utf8)  as mbl_no   /* varchar-varchar(300)-휴대폰_번호 */

 

3. 해석


CAST(REGEXP_REPLACE(AES_DECRYPT(UNHEX(m.mbl_no), #{aes_encrypt_key}), '[^0-9]', '') as varchar(100) character set utf8)  as mbl_no   /* varchar-varchar(300)-휴대폰_번호 */

 

 

1. CAST함수는 데이터 형식을 다른 데이터 형식으로 변환을 해준다.

2. REGEXP_REPLACE를 사용하여 전화번호 정규식으로 치환한다.

3. AES_DECRYPT 는 암호화된 문자열을 복호화한다.

4. UNHEX 16진수를 2진수화로 변환한다??

https://learn.microsoft.com/ko-kr/azure/databricks/sql/language-manual/functions/unhex

5.m.mbl_no는 필자가 사용한 칼럼 해당 코드를 사용하려면 실제 사용하는 칼럼으로 변환해야 한다.

6. #{aes_encrypt_key} 변수를 서비스 단에서 선언하여 전달받는다.

7. alias를 사용하는데 크기, character set을 선언한다.

8. 최종적으로 alias를 선언하여 칼럼 값을 저장한다.

 

 

혹시 더 좋은 방법이 있다면 댓글로 피드백 부탁드리겠습니다! 감사합니다.

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 개발 > 언어' 카테고리의 다른 글

[ExtJS 6] 문법 정리  (0) 2023.04.21
[SQL] varchar(50)은 몇 글자를 저장할 수 있을까?  (0) 2022.11.08
[JAVA] Super() 키워드 예제 / Super 부모, 자식  (2) 2022.09.09
[JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)  (2) 2022.09.09
[JAVA](모든 시도 해봄) / java.lang.ClassNotFoundException 오류 해결  (4) 2022.03.12
'💻 개발/언어' 카테고리의 다른 글
  • [ExtJS 6] 문법 정리
  • [SQL] varchar(50)은 몇 글자를 저장할 수 있을까?
  • [JAVA] Super() 키워드 예제 / Super 부모, 자식
  • [JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • 🌟🙇🏻‍♂️ 꼭 읽어봤으면 하는 글 (0)
      • 💻 개발 (76)
        • 설정 및 세팅 (4)
        • DB&서버&네트워크&암호 (12)
        • React (0)
        • JPA, Querydsl (14)
        • 알고리즘 (7)
        • 언어 (15)
        • 프레임워크 (14)
        • HTML, CSS (10)
      • ✍🏻 (33)
        • 회고록 (15)
        • 독서록 (7)
        • 일지록 (10)
        • 세미나 (1)
      • 💡 리뷰 (0)
        • 제품리뷰 (0)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[SQL] AES 전화번호 복호화시 [blob] 문제 해결하기
상단으로

티스토리툴바