본문 바로가기
Database/MySQL

[MySQL]양방향 암호화 알고리즘 DB 함수 사용법

by tpleehan 2022. 11. 22.
# 암호화
# aes_encrypt();

# 복호화
# aes_decrypt();

# MySQL 
HEX(AES_ENCRYPT('문자열', '암호화 키'));

# 예시
# aes_encrypt 암호화
insert into 테이블명 values (hex(aes_encrypt('문자열', '암호화 키')));
 
# aes_decrypt 복호화
select aes_decrypt(unhex(필드명), '암호화 키') from 테이블명;

# hex를 쓰는 이유는 2진법을 16진수로 표현하기 위해서 사용된다.
# unhex를 쓰는 이유는 16진수를 2진법으로 표현하기 위해서 사용된다.

 

테스트용 테이블로 컬럼은 id, name, phone 이렇게 3개로 지정했다.

연락처만 암호화를 위해 암호화 함수를 활용해 연락처 값을 insert 했다.

phone 컬럼에는 010-1234-5678이 아닌 C3122E5B60EEE234B6F5C12D8055965B이라는 값이 들어갔다.

복호화 함수를 통해 해당 값을 알기 위해선 key 값을 넣어야 확인할 수 있다.

다른 key의 값을 넣으면 null 값이 나타난다.

다른 임의의 값을 확인하기 위해 다른 값과 함께 id 1과 4을 동일한 값, 동일한 암호화 key를 insert했다.
조회결과를 확인해보니 똑같은 암호화가 된 것을 확인할 수 있다.

값은 동일하더라도 key 값을 다르게 설정해서 insert를 해보니 다른 암호화로 변경된 것을 확인할 수 있다.

해당 암호화 key를 알고 있으면 복호화를 통해 원본 값을 확인할 수 있다.

참고 및 출처

https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html

'Database > MySQL' 카테고리의 다른 글

[MySQL] Schema + Table 생성  (0) 2022.11.18

댓글