Pakken DBMS_CRYPTO er den korrekte pakke til at generere hashes. Det er ikke givet til PUBLIC som standard, du bliver nødt til at give det specifikt (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
Resultatet af denne funktion er af datatypen RAW
. Du kan gemme det i en RAW
kolonne eller konverter den til VARCHAR2
ved hjælp af RAWTOHEX
eller UTL_ENCODE.BASE64_ENCODE
funktioner.
HASH
Funktionen er overbelastet til at acceptere tre datatyper som input:RAW
, CLOB
og BLOB
. På grund af reglerne for implicit konvertering, hvis du bruger en VARCHAR2
som input, vil Oracle forsøge at konvertere det til RAW
og vil højst sandsynligt mislykkes, da denne konvertering kun virker med hexadecimale strenge.
Hvis du bruger VARCHAR2
derefter skal du konvertere input til en binær datatype eller en CLOB
, for eksempel :
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;
du vil finde yderligere information i dokumentationen til DBMS_CRYPTO.hash