Oracle 암/복호화 Package Function Sample (DBMS_CRYPTO)
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;