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!

Error: PLS-00201: identifier 'DBMS_CRYPTO' must be declared.

User_9NVEXJul 15 2022

i want to test oracle aes encryption function
and copy code from
PL/SQL Packages and Types Reference (0 Bytes)then i create a procedure to test.
testAes.txt (1.49 KB)code bellow:

CREATE OR REPLACE PROCEDURE "testAes" AS
input_string VARCHAR2 (200) := 'Secret Message';
output_string VARCHAR2 (200);
encrypted_raw RAW (2000); -- stores encrypted binary text
decrypted_raw RAW (2000); -- stores decrypted binary text
num_key_bytes NUMBER := 256/8; -- key length 256 bits (32 bytes)
key_bytes_raw RAW (32); -- stores 256-bit encryption key
encryption_type PLS_INTEGER := -- total encryption type

          DBMS\_CRYPTO.ENCRYPT\_AES256  
         + DBMS\_CRYPTO.CHAIN\_CBC  
         + DBMS\_CRYPTO.PAD\_PKCS5;  

iv_raw RAW (16);

BEGIN
DBMS_OUTPUT.PUT_LINE ( 'Original string: ' || input_string);
key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
iv_raw := DBMS_CRYPTO.RANDOMBYTES (16);
encrypted_raw := DBMS_CRYPTO.ENCRYPT
(
src => UTL_I18N.STRING_TO_RAW (input_string, 'AL32UTF8'),
typ => encryption_type,
key => key_bytes_raw,
iv => iv_raw
);

-- The encrypted value "encrypted_raw" can be used here

decrypted_raw := DBMS_CRYPTO.DECRYPT
(
src => encrypted_raw,
typ => encryption_type,
key => key_bytes_raw,
iv => iv_raw
);

output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');

DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string);
END;
---------------------------------------
when i save the procedure in navicate , it said:
Error: PLS-00201: identifier 'DBMS_CRYPTO' must be declared.

i login with sys /sysdba

Comments
Post Details
Added on Jul 15 2022
5 comments
553 views