-- 암호화 함수
CREATE OR REPLACE FUNCTION f_Encrypt (p_Input_str in varchar2) RETURN VARCHAR2
AS
v_Input_len number := ROUND(LENGTH(p_Input_str)/8+0.5)*8;
v_Encrypted_str varchar2(2000) := null;
v_Key varchar2(16) := 'abcdefgh12345678';
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DESENcrypt(input_string => RPAD(p_Input_str,
v_Input_len),
key_string => v_Key,
encrypted_string =>v_Encrypted_str);
RETURN v_Encrypted_str;
END;
/
-- 복호화 함수
CREATE OR REPLACE FUNCTION f_Decrypt (p_Encrypted_str in varchar2) RETURN VARCHAR2
AS
v_Key varchar2(16) := 'abcdefgh12345678';
v_Decrypted_str varchar2(2000);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(input_string => p_Encrypted_str,
key_string => v_Key,
decrypted_string => v_Decrypted_str);
RETURN trim(v_Decrypted_str);
END;
/
10g
암호화 함수
CREATE OR REPLACE FUNCTION pv_encrypt(v_in_string VARCHAR2)
RETURN RAW IS
input_raw RAW(1024);
key_raw RAW(16) := UTL_RAW.CAST_TO_RAW('abcdefghijklmnop');
v_out_raw RAW(1024);
AES_CBC_PKCS5 CONSTANT PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES128
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
BEGIN
input_raw := UTL_I18N.STRING_TO_RAW(v_in_string, 'AL32UTF8');
v_out_raw := DBMS_CRYPTO.ENCRYPT(
src => input_raw,
typ => AES_CBC_PKCS5,
key => key_raw);
RETURN v_out_raw;
END pv_encrypt;
/
복호화 함수
CREATE OR REPLACE FUNCTION pv_decrypt(v_in_raw RAW)
RETURN VARCHAR2 IS
key_raw RAW(16) := UTL_RAW.CAST_TO_RAW('abcdefghijklmnop');
output_raw RAW(1024);
v_out_string VARCHAR2(1024);
AES_CBC_PKCS5 CONSTANT PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES128
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
BEGIN
output_raw := DBMS_CRYPTO.DECRYPT(
src => v_in_raw,
typ => AES_CBC_PKCS5,
key => key_raw);
v_out_string := UTL_I18N.RAW_TO_CHAR(output_raw, 'AL32UTF8');
RETURN v_out_string;
END pv_decrypt;
[출처] oracle10g암호화,복호화|작성자 매너건달
댓글 없음:
댓글 쓰기