개요
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> </p>
SQL
복사