Jedną z metod bez korzystania z „Bezpiecznego zewnętrznego magazynu haseł” (niezależnie od tego, co to może być) jest dodanie kolumny RAW(16) do tabeli w celu przechowywania zaszyfrowanej nazwy użytkownika i hasła:
alter table mytable add password raw(16);
Następnie zapisz w nim zaszyfrowaną nazwę użytkownika i hasło w następujący sposób:
insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password))
);
Następnie, gdy użytkownik próbuje się zalogować za pomocą nazwy użytkownika i hasła, możesz je sprawdzić w ten sposób:
select 'OK'
from mytable
where username = :username
and password = dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password));
W ten sposób nikt nie może dowiedzieć się, jakie jest przechowywane hasło (poza brutalną siłą).