기술 정보
home
채널 소개
home

DBMS_CRYPTO 설정방법 및 예제

문서 유형
기술 정보
분야
App개발
키워드
DBMS_CRYPTO
적용 제품 버전
6F S06
6F S07
7F S02

개요

DBMS_CRYPTO는 데이터 암복호화 및 인증 등에 쓰이는 해시 알고리즘을 제공하는 패키지로, 3rd party solution 도입을 하지 않는 경우 대안으로 사용할 수 있습니다. 이를 활용할 수 있는 설정 방법 및 예제를 안내합니다.

방법

암호화 함수 생성

SQL> CREATE OR REPLACE FUNCTION FN_ENCRYPT_ARIA256 (IN_DATA IN VARCHAR2) RETURN VARCHAR2 IS V_RETURN VARCHAR2(200); KEY RAW(128); DATA_RAW RAW(256); ENCRYP_DATA_ARIA256 RAW(256); IV RAW(256); BEGIN IF IN_DATA IS NULL THEN RETURN ''; END IF; KEY := UTL_RAW.cast_to_raw('MyEncryptionKey123MyEncryptionKey123'); IV := '00000000000000000000000000000000'; DATA_RAW := UTL_RAW.CAST_TO_RAW (IN_DATA); ENCRYP_DATA_ARIA256 := DBMS_CRYPTO.ENCRYPT(DATA_RAW, DBMS_CRYPTO.ENCRYPT_ARIA256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, KEY, IV); V_RETURN := ENCRYP_DATA_ARIA256; RETURN V_RETURN; END FN_ENCRYPT_ARIA256;
SQL
복사

복호화 함수 생성

SQL> CREATE OR REPLACE FUNCTION FN_DECRYPT_ARIA256 (IN_DATA IN VARCHAR2) RETURN VARCHAR2 IS V_RETURN VARCHAR2(200); KEY RAW(128); DECRYPT_DATA_ARIA256 RAW(256); IV RAW(256); BEGIN IF IN_DATA IS NULL THEN RETURN ''; END IF; KEY := UTL_RAW.cast_to_raw('MyEncryptionKey123MyEncryptionKey123'); IV := '00000000000000000000000000000000'; DECRYPT_DATA_ARIA256 := DBMS_CRYPTO.DECRYPT(IN_DATA , DBMS_CRYPTO.ENCRYPT_ARIA256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 , KEY , IV); V_RETURN := UTL_RAW.CAST_TO_VARCHAR2 (DECRYPT_DATA_ARIA256); RETURN V_RETURN; END FN_DECRYPT_ARIA256;
SQL
복사

예제

SQL> SELECT FN_ENCRYPT_ARIA256('aaaa') AS ENC FROM DUAL; ENC ---------------------------------- A01725B87466A512A3B29E81F54B9C55 SQL> SELECT FN_DECRYPT_ARIA256('A01725B87466A512A3B29E81F54B9C55') AS DEC FROM DUAL; DEC ---------------------------------- aaaa</code></pre></td></tr></tbody></table></figure><p>&nbsp;</p>
SQL
복사