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