1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| create or replace PACKAGE CRYPTO_AES_PKG IS
FUNCTION F_ENCRYPT(I_INPUT_STRING VARCHAR2, I_KEY_STRING varchar2) RETURN VARCHAR2; FUNCTION F_DECRYPT(I_INPUT_STRING VARCHAR2, I_KEY_STRING VARCHAR2) RETURN VARCHAR2; END; create or replace PACKAGE BODY CRYPTO_AES_PKG IS FUNCTION F_ENCRYPT(I_INPUT_STRING VARCHAR2, I_KEY_STRING varchar2) RETURN VARCHAR2 IS V_KEY_STRING RAW(128) := utl_raw.cast_to_raw( sys.dbms_obfuscation_toolkit.md5(input_string => I_KEY_STRING)); V_ENCRYPTED_RAW RAW(200); encryption_type pls_integer := DBMS_Crypto.ENCRYPT_AES128 + DBMS_Crypto.CHAIN_ECB + DBMS_Crypto.PAD_PKCS5; BEGIN V_ENCRYPTED_RAW := DBMS_CRYPTO.ENCRYPT( SRC => UTL_I18N.STRING_TO_RAW(I_INPUT_STRING, 'AL32UTF8'), TYP => encryption_type, KEY => V_KEY_STRING); RETURN (UTL_I18N.RAW_TO_CHAR(utl_encode.base64_encode(RAWTOHEX(V_ENCRYPTED_RAW)))); END F_ENCRYPT; FUNCTION F_DECRYPT(I_INPUT_STRING VARCHAR2, I_KEY_STRING VARCHAR2) RETURN VARCHAR2 IS V_KEY_STRING RAW(128) := utl_raw.cast_to_raw( sys.dbms_obfuscation_toolkit.md5(input_string => I_KEY_STRING)); V_DECRYPTED_RAW RAW(200); b64_de RAW(200); encryption_type pls_integer := DBMS_Crypto.ENCRYPT_AES128 + DBMS_Crypto.CHAIN_ECB + DBMS_Crypto.PAD_PKCS5; BEGIN b64_de := utl_encode.base64_decode(utl_raw.cast_to_raw(I_INPUT_STRING)); V_DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT( SRC => HEXTORAW(b64_de), TYP =>encryption_type, KEY => V_KEY_STRING);
RETURN (
UTL_I18N.RAW_TO_CHAR(V_DECRYPTED_RAW, 'AL32UTF8') ); END F_DECRYPT; END CRYPTO_AES_PKG;
|