create or replace PACKAGE crypto
IS
FUNCTION encrypt
(
in_str IN VARCHAR2,
in_key IN VARCHAR2 := 'yourPass'
) RETURN RAW;
FUNCTION decrypt
(
in_str IN VARCHAR2,
in_key IN VARCHAR2 := 'yourPass'
) RETURN VARCHAR2;
END crypto;
create or replace
PACKAGE BODY crypto
IS
FUNCTION encrypt (in_str IN VARCHAR2, in_key IN VARCHAR2 := 'yourPass')
RETURN RAW
IS
in_key_raw RAW(16000);
in_str_raw RAW(16000);
encrypt_raw RAW(16000);
BEGIN
in_str_raw := UTL_I18N.STRING_TO_RAW(in_str, 'AL32UTF8');
in_key_raw := UTL_I18N.STRING_TO_RAW(in_key, 'AL32UTF8');
encrypt_raw :=
DBMS_CRYPTO.ENCRYPT(
src => in_str_raw,
typ => DBMS_CRYPTO.DES_CBC_PKCS5,
key => in_key_raw,
iv => NULL);
RETURN encrypt_raw;
END encrypt;
FUNCTION decrypt (in_str IN VARCHAR2, in_key IN VARCHAR2 := 'yourPass')
RETURN VARCHAR2
IS
in_key RAW(16000);
decrypt_raw VARCHAR2(16000);
out_str VARCHAR2(16000);
BEGIN
in_key_raw := UTL_I18N.STRING_TO_RAW(in_key, 'AL32UTF8');
decrypt_raw :=
DBMS_CRYPTO.DECRYPT(
src => in_str,
typ => DBMS_CRYPTO.DES_CBC_PKCS5,
key => in_key_raw,
iv => NULL);
out_str := UTL_I18N.RAW_TO_STRING(decrypt_raw, 'AL32UTF8');
RETURN out_str;
END decrypt;
END crypto;
-- 호출
SELECT crypto.encrypt('TEST') FROM dual;
SELECT crypto.decrypt(crypto.encrypt('TEST')) FROM dual;
'Db > Oracle' 카테고리의 다른 글
DBMS_XPLAN 을 이용한 plan 정보 확인 (0) | 2022.12.27 |
---|---|
oracle cursor가 return되는 procedure를 pl/sql 문으로 실행 (0) | 2018.03.07 |
쿼리 내용으로 쿼리실행 (1) | 2013.06.05 |
공휴일을 제외한 두 날짜의 차이 구하기 (2) | 2012.09.12 |
oracle 평일 구하는 함수 (1) | 2012.05.23 |