처음에는 이메일도 자바에서 암호화,복호화 제공하는 AES256Cipher라는거를 이용했는데 데이터 검색시 검색어에 포함된 문자를 가져와야해서 자바에서 제공하는
먼저 암호화는 AES_ENCRYPT() 함수를 이용하고,복호화는 AED_DECRYPT() 함수를 이용한다.
프로젝트에서 관리자 테이블에 이메일은 암호화로 저장한다했고, 이제 관리자 메인 페이지에서 이렇게 구분 검색 [전체,이메일,이름] 선택이 있는데 예를들어 전체 선택하고 "ing" 을 하고 검색시 이메일,이름 필드 둘다 "ing"을 포함하는 문자 데이터 있는지 검색해야한다.
그러나 이메일은 암호화 상태로 저장중이니 복호화 하고 "ing"을 포함하는 문자 데이터 있는지 검색해야한다.
테이블에 이메일필드 데이터 타입은 VARCHAR()인데 암호화 AES_ENCRYPT()를 하면 바이너리 값이 나와서 hex()를 이용해서
16진수 문자열로 변환하고 저장해야한다.
그래서 밑에는 이메일 필드 암호화해서 저장하는 경우고
밑에는 이메일이나 이름 필드에 해당 문자열 포함하는 데이터 있나 찾는거인데
일단 셀렉문에 이메일 필드 보면
- UNHEX(EMAIL): 이메일 필드를 헥사값에서 바이너리 데이터로 변환합니다.
- AES_DECRYPT(UNHEX(EMAIL), '257FQC3684064A3E8KEN6257FQC36840'): 바이너리 데이터를 암호화 키를 사용하여 복호화합니다.
- CONVERT(... USING utf8): 복호화된 바이너리 데이터를 UTF-8 인코딩된 문자열로 변환합니다.
Where문에 이메일 필드 검색보면 복호화후 거기서 해당 문자열 포함한게 있나 검색하는거다.
데이터 삽일할때 암호화 하고 핵사값으로 넣었으니 조회할땐 핵사값을 바이너리로 변환부터 하고 그담 복호화하는거다.
'플랫폼엘 정리or해석' 카테고리의 다른 글
커스텀 어노테이션 적용후,인터셉터에 적용하기 (0) | 2024.07.12 |
---|---|
실무 다른 동료 SQL문 분석 (0) | 2024.07.11 |
XSS 공격 방지용 XssFilter (0) | 2024.06.25 |
Json 코드 해석 (0) | 2024.06.25 |
JSP의 코드 해석 (0) | 2024.06.24 |