Не удаётся воспользоваться пакетом DBMS_CRYPTO
Пытаюсь использовать функции DBMS_CRYPTO. От SYSTEM запускаю:
DECLARE
l_key VARCHAR2 (2000) := '1234567890123456';
l_in_val VARCHAR2 (2000) := 'Confidential Data';
l_mod NUMBER
:= DBMS_CRYPTO.encrypt_aes128
+ DBMS_CRYPTO.chain_cbc
+ DBMS_CRYPTO.pad_pkcs5;
l_enc RAW (2000);
BEGIN
l_enc :=
DBMS_CRYPTO.encrypt (utl_i18n.string_to_raw (l_in_val, 'AL32UTF8'),
l_mod,
utl_i18n.string_to_raw (l_key, 'AL32UTF8')
);
DBMS_OUTPUT.put_line ('Encrypted=' || l_enc);
END;
Он выдаёт :
Error report -
ORA-06550: Строка 5, столбец 17:
PLS-00201: идентификатор 'DBMS_CRYPTO' должен быть объявлен
ORA-06550: Строка 4, столбец 20:
PL/SQL: Item ignored
ORA-06550: Строка 11, столбец 11:
PLS-00201: идентификатор 'DBMS_CRYPTO' должен быть объявлен
ORA-06550: Строка 10, столбец 8:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
Смотрю select * from dba_objects where object_name = 'DBMS_CRYPTO'; выдаёт:

Попытался создать нового пользователя и дать ему права:
grant execute on sys.dbms_crypto to VICE_SYS;
Но тоже ошибка:
Error starting at line : 1 in command -
grant execute on sys.dbms_crypto to VICE_SYS
Error report -
ORA-00942: таблица или представление пользователя не существует
00942. 00000 - "table or view does not exist"
*Cause:
Что делать?
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Надо дать права выполнения пакета. Это может только пользователь SYS, никто другой.
DBMS_CRYPTO Security Model
Oracle Database installs this package in the SYS schema. You can then grant package access to existing users and roles as needed.
SQL> show user
USER is "ME"
SQL> exec dbms_output.put_line ('result='||dbms_crypto.randombytes (16));
ORA-06550: line 1, column 40:
PLS-00201: identifier 'DBMS_CRYPTO' must be declared
SQL> conn sys/pass@dbsrv/pdb1 as sysdba
Connected.
SQL> grant execute on dbms_crypto to me;
Grant succeeded.
SQL> conn me/me@mpsrv/pdb1.19c
Connected.
SQL> exec dbms_output.put_line ('result='||dbms_crypto.randombytes (16));
result=7311CFC8CF6AEB02C5B6238DFB8FBB1E
PL/SQL procedure successfully completed.