IT 성장일기
[MySQL] MySQL, Maria DB에서 컬럼 암, 복호화 하기 본문
반응형
MySQL, Maria DB에서 컬럼 암, 복호화 하기
얼마 전 운영 중인 서비스 상에서 이벤트를 위한 작은 프로젝트 하나를 담당할 기회가 있었습니다.
프로젝트를 진행하던 중 Maria DB에서 자체적으로 제공하는 암, 복호화 기능을 사용하게 되어 정리해보고자 합니다.
암호화 알고리즘은 AES 대칭키 방식을 따르고 있습니다.
따라서 암, 복호화에 사용되는 키를 꼭 준비해야 합니다.
간단 함수 설명
HEX : 숫자 또는 이진 문자열을 16진수로 변환함
UNHEX : 16진수 문자열을 다시 숫자 또는 이진 문자열로 변환함
AES_ENCRYPT : 문자열을 AES 알고리즘을 사용해 이진 문자열로 암호화함
AES_DECRYPT : 이진 문자열을 평문으로 복호화함
암호화하기
아래와 같이 평문과 키를 이용해 암호화할 수 있습니다.
아래 쿼리는 문자열을 바이너리로 암호화하고 그 결과를 16진수로 변환해서 반환해줍니다.
SELECT
HEX(AES_ENCRYPT('NOT_ENCODED_WORDS','secret_key')) AS 'ENCODED'
대박🫢
복호화도 해보겠습니다.
복호화하기
조립은 해체의 역순이죠.
암호화 때엔 암호화 > 16진수 변환의 순서를 거쳤으니 거꾸로 2진수 변환 > 복호화의 순서로 실행해야 합니다.
SELECT
AES_DECRYPT(UNHEX('9FE260C607EC53A3FD728D36B453D375B7173609A462A3412688B9D35AA0F4B6'), 'secret_key') AS 'DECODED'
미쳤다🫨
진짜 너무 신기합니다.
마치며
Maria DB가 제공하는 암호화 과정을 다시 한 번 되짚으면서 마무리해보겠습니다.
암호화 : 키를 이용하여 평문 암호화 > 2진 문자열 > 16진수 문자열
복호화 : 16진수 문자열 > 2진 문자열 > 키를 이용하여 평문으로 복호화
앞으로 암호화 모듈 따로 만들기 귀찮거나 시간이 촉박할 때 유용하게 써먹기로 했습니다.
감사합니다.
반응형
'Database > MySQL(Maria DB)' 카테고리의 다른 글
[MySQL] MySQL, MariaDB에서 Merge 구문 구현하기 (3) | 2024.12.24 |
---|---|
[MySQL] MySQL, Maria DB에서 날짜를 구하는 다양한 방법 (0) | 2024.10.30 |
[MySQL] DATE_ADD와 DATE_SUB로 날짜 계산하기 (2) | 2024.10.21 |
[My SQL] My SQL 설치하기 (0) | 2023.09.11 |