Balíček DBMS_CRYPTO je správný balíček pro generování hodnot hash. Ve výchozím nastavení není uděleno PUBLIC, budete ho muset udělit konkrétně (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).
Výsledkem této funkce je datový typ RAW . Můžete jej uložit do RAW nebo jej převeďte na VARCHAR2 pomocí RAWTOHEX nebo UTL_ENCODE.BASE64_ENCODE funkce.
HASH funkce je přetížena, aby akceptovala tři datové typy jako vstup:RAW , CLOB a BLOB . Kvůli pravidlům implicitní konverze, pokud použijete VARCHAR2 jako vstup se Oracle pokusí převést na RAW a s největší pravděpodobností selže, protože tento převod funguje pouze s hexadecimálními řetězci.
Pokud používáte VARCHAR2 pak musíte převést vstup na binární datový typ nebo CLOB , například:
DECLARE
x RAW(20);
BEGIN
SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)),
sys.dbms_crypto.hash_sh1)
INTO x
FROM t;
END;
další informace naleznete v dokumentaci DBMS_CRYPTO.hash