# 암호화
# 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 |
---|
댓글