Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Unable to decrypt the function

Ricky007May 18 2022

Dear Experts
I am trying to encrypt and decrypt the data stored in the database and the below is the function.

Please help to decrypt the function Error , same is working in 11g.

Database version Using : 12.1.0.2.0
====================Encrypt Function
CREATE OR REPLACE FUNCTION fn_encrypt (pi_str_val VARCHAR2)
RETURN RAW
AS
v_key VARCHAR2(4000) := '~!@#$%^&*()_+|}{":?><`;''/.,\-=~`';
v_master_key VARCHAR2(4000) := 'IamTheMasterKey';
v_mod NUMBER := dbms_crypto.ENCRYPT_AES256 + dbms_crypto.CHAIN_CBC + dbms_crypto.PAD_PKCS5;
v_enc_key RAW(4000);
v_enc_val RAW(4000);

BEGIN
v_enc_key := utl_raw.bit_xor (UTL_I18N.STRING_TO_RAW (v_key , 'AL32UTF8'), UTL_I18N.STRING_TO_RAW (v_master_key, 'AL32UTF8'));
v_enc_val := dbms_crypto.encrypt (UTL_I18N.STRING_TO_RAW (pi_str_val, 'AL32UTF8'), v_mod, v_enc_key );
RETURN RAWTOHEX(v_enc_val);
END;
/

=============Decrypt Function

CREATE OR REPLACE FUNCTION fn_decrypt (pi_hex_val VARCHAR)
RETURN VARCHAR2
AS
v_raw_val RAW (4000) := HEXTORAW(pi_hex_val);
v_key VARCHAR2(4000) := '~!@#$%^&*()_+|}{":?><`;''/.,\-=~`';
v_master_key VARCHAR2(4000) := 'IamTheMasterKey';
v_mod NUMBER := dbms_crypto.ENCRYPT_AES256 + dbms_crypto.CHAIN_CBC + dbms_crypto.PAD_PKCS5;
v_enc_key RAW (4000);
v_dec_val RAW (4000);

BEGIN
v_enc_key := utl_raw.bit_xor (UTL_I18N.STRING_TO_RAW (v_key, 'AL32UTF8'), UTL_I18N.STRING_TO_RAW (v_master_key, 'AL32UTF8'));
v_dec_val := dbms_crypto.decrypt (v_raw_val, v_mod, v_enc_key );
RETURN utl_i18n.raw_to_char(v_dec_val);
END;
/

Output For Encryption :

image.png
Error Output while Decrypting :

image.png
Please help,Thanks in advance.

This post has been answered by Paulzip on May 18 2022
Jump to Answer
Comments
Post Details
Added on May 18 2022
2 comments
348 views