[mysql,mariaDB] 컬럼 암호화, 복호화
INTRO
클라이언트의 요청사항 : 기존 테이블의 컬럼을 암호화 하고싶어요!! 중요한 자료이니깐요!!
작업 내용 : INSERT, UPDATE 시 암호화, SELECT시 복호화
사용 기능 : AES 암복호화
바로 시작합니다.
CONTENTS
varchar타입은 단순한 문자열을 저장하는 타입으로 암호화된 내용을 저장하려고하면 incorrect string value 에러가 뜹니다.
일단 varchar로 되어있던 기존의 컬럼을 blob로 바꾸도록 하겠습니다.
1 | ALTER TABLE 테이블명 MODIFY 컬럼명 blob; |
암호화
1 | AES_ENCRYPT( '암호화할 내용' ,SHA2( 'key' ,512)) |
복호화
1 | AES_DECRYPT(암호화된컬럼명,SHA2( 'key' ,512)) |
기본적인 코드는 위와 같습니다.
다만 한글을 저장 할경우 인코딩이 맞지 않아 SELECT가 잘 되지 않을 경우가 있으니 CONVERT함수를 넣어줍니다.
1 | CONVERT (AES_DECRYPT(암호화된컬럼명,SHA2( 'key' ,512))using euckr) 컬럼명 |