PostgreSQL2023. 3. 13. 22:19

중요한 데이터를 평문 전송, 저장할 수 없어 postgreSQL DB에 AES 암호화를 적용하여

저장할 경우가 생겼다.

그럴땐 이렇게 convert_to와 encrypt 함수를 활용하여 암호화, 복호화를 해준다.

 

 

-- 암호화
select encode(encrypt(convert_to('암호화할문자열','utf8'),'암호화키','aes'),'hex');
-- 결과 -> 암호화된 값



-- 복호화
select convert_from(decrypt(decode('위에서 암호화된문자열','hex'),'암호화키','aes'),'utf8');

-- 결과 -> '암호화할문자열'로 원복

 

 

 

사용하기 편하게, 함수로 빼보았다.

 

 

-- AES_ENC 함수(암호화)
CREATE OR REPLACE FUNCTION AES_ENC(ENCSTR CHARACTER VARYING(2000)) AS
$$ BEGIN 
RETURN encode(encrypt(convert_to(ENCSTR,'utf8'),'암호화키','aes'),'hex');
END; $$
LANGUAGE PLPGSQL;




-- AES_DEC 함수(복호화)
CREATE OR REPLACE FUNCTION AES_ENC(ENCSTR CHARACTER VARYING(2000)) AS
$$ BEGIN 
RETURN convert_from(decrypt(decode(ENCSTR, 'hex'),'암호화키','aes'),'utf8');
END; $$
LANGUAGE PLPGSQL;
Posted by 사슴영혼'-'