Community

게시판

자유롭게 글을 작성하고, 지식을 공유하며 소통하는 공간입니다.

지식 공유

간단하게 DB 암호화 함수 만들기

**설명** 이 함수는 Base64로 인코딩하고, 복호화 하는 함수 입니다. 운영 서버에 DB암호화 기능이 있을 때 로컬에는 제공을 안해주니 불편하실 때 참고하셔서 사용하시면 좋을 것 같아 공유 합니다. ## 인코딩 함수 만들기 ```CREATE OR REPLACE FUNCTION pls_encrypt_b64_id ( p_input VARCHAR2, -- Base64 문자열로 인코딩 p_dummy NUMBER DEFAULT 101 -- 의미 없는 파라미터, 인터페이스 유지용 ) RETURN VARCHAR2 IS BEGIN RETURN UTL_ENCODE.TEXT_ENCODE(p_input, 'UTF8', UTL_ENCODE.BASE64); END; ``` ## 디코딩 함수 만들기 ```jsx CREATE OR REPLACE FUNCTION pls_decrypt_b64_id ( p_input VARCHAR2, p_dummy NUMBER DEFAULT 101 -- 의미 없는 파라미터, 인터페이스 유지용 ) RETURN VARCHAR2 IS l_raw RAW(32767); BEGIN -- Base64 decode(문자셋 변환 없이 처리) l_raw := UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(p_input)); -- RAW -> VARCHAR2 RETURN UTL_I18N.RAW_TO_CHAR(l_raw, 'UTF8'); END; ``` ## 함수 생성 시 잘 생성 되었는지 확인 하기 ```jsx SELECT object_name, object_type, status FROM all_objects WHERE object_name = UPPER(’함수명'); ``` ## 함수 삭제 ```jsx DROP FUNCTION 함수명; ``` ## ERROR 확인 ```jsx SELECT * FROM USER_ERRORS WHERE NAME = UPPER('함수명') AND TYPE = 'FUNCTION'; ``` ## 인코딩 예시 ```jsx SELECT pls_encrypt_b64_id('123123', 101) FROM dual; ``` ## 디코딩 예시 ```jsx SELECT pls_decrypt_b64_id('MTIzMTIz', 101) FROM dual; ```