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!

Dbms_crypto using base64 encode

user1758353Jul 18 2017 — edited Jul 18 2017

Would like to get the encrypted value in base64 encode  and decrypt the base64 value

Nnt getting the correct value using the below code

KEY : AES-128

Sample Code : Without base64 code

DECLARE

l_test VARCHAR2(19) := 'test@test.com';

l_ccn_raw RAW(2000) := utl_raw.cast_to_raw(l_test);

l_key     RAW(128) := utl_raw.cast_to_raw('D4DB00502466F52FEE2E3B2316DE8B95');

l_encryption_type  PLS_INTEGER:=DBMS_CRYPTO.ENCRYPT_AES

                                     + DBMS_CRYPTO.CHAIN_ECB

                                     + DBMS_CRYPTO.PAD_PKCS5;

l_encrypted_raw RAW(2048);

l_decrypted_raw RAW(2048);

BEGIN

  dbms_output.put_line('Original : ' || l_test);

  l_encrypted_raw := dbms_crypto.encrypt(l_ccn_raw,  l_encryption_type, l_key);

  dbms_output.put_line('Encrypted : ' ||  RAWTOHEX(utl_raw.cast_to_raw(l_encrypted_raw)));

  l_decrypted_raw := dbms_crypto.decrypt(src => l_encrypted_raw,

  typ => l_encryption_type, key => l_key);

  dbms_output.put_line('Decrypted : ' ||  utl_raw.cast_to_varchar2(l_decrypted_raw));

END;

Output :

---------------------

Original : test@test.com

Encrypted : 3433373138374637363336354531463030383432433243364246373742313331

Decrypted : test@test.com

------------------------------------------------------------------------------------------------------------------------------------

Base64 Encode - Not getting correct encryption and decryption

DECLARE

L_test VARCHAR2(2000) := 'test@test.com';

L_CCN_RAW RAW(128) := UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(L_test));

L_KEY     RAW(128) := UTL_RAW.CAST_TO_RAW('D4DB00502466F52FEE2E3B2316DE8B95');

L_ENCRYPTION_TYPE  PLS_INTEGER:=DBMS_CRYPTO.ENCRYPT_AES

                                     + DBMS_CRYPTO.CHAIN_ECB

                                     + DBMS_CRYPTO.PAD_PKCS5;

L_ENCRYPTED_RAW RAW(2048);

L_DECRYPTED_RAW RAW(2048);

BEGIN

  DBMS_OUTPUT.PUT_LINE('ORIGINAL : ' || L_test);

  DBMS_OUTPUT.PUT_LINE('After Encoded : ' || L_ccn_Raw);

  L_ENCRYPTED_RAW := DBMS_CRYPTO.ENCRYPT(L_CCN_RAW,  L_ENCRYPTION_TYPE, L_KEY);

 

    DBMS_OUTPUT.PUT_LINE('ENCRYPTED : ' ||L_ENCRYPTED_RAW);

      

  L_DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT(SRC => L_ENCRYPTED_RAW,  TYP => L_ENCRYPTION_TYPE, KEY => L_KEY);

   

  DBMS_OUTPUT.PUT_LINE('DECRYPTED : ' || UTL_ENCODE.BASE64_DECODE(L_DECRYPTED_RAW));

 

 

 

  END;

----------------------------------------------------------------------------

Output :

ORIGINAL : test@test.com

After Encoded : 6447567A644542305A584E304C6D4E7662513D3D

ENCRYPTED : 4709924C744F29402F5A1D63D45C6FC527A81D7BDA77C7529F8E0DA7E3500205

DECRYPTED : 7465737440746573742E636F6D

Please suggest?

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 15 2017
Added on Jul 18 2017
2 comments
1,195 views