Один из способов без использования «Безопасного внешнего хранилища паролей» (что бы это ни было) состоит в добавлении столбца RAW (16) в таблицу для хранения хешированного имени пользователя и пароля:
alter table mytable add password raw(16);
Затем сохраните хэшированное имя пользователя и пароль следующим образом:
insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password))
);
Затем, когда пользователь пытается войти с именем пользователя и паролем, вы можете проверить их следующим образом:
select 'OK'
from mytable
where username = :username
and password = dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password));
Таким образом, никто не может узнать, какой хранится пароль (кроме как грубой силой).