Het pakket DBMS_CRYPTO is het juiste pakket om hashes te genereren. Het wordt standaard niet aan PUBLIC verleend, u moet het specifiek verlenen (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
Het resultaat van deze functie is van het datatype RAW
. Je kunt het opslaan in een RAW
kolom of converteer het naar VARCHAR2
met behulp van de RAWTOHEX
of UTL_ENCODE.BASE64_ENCODE
functies.
De HASH
functie is overbelast om drie datatypes als invoer te accepteren:RAW
, CLOB
en BLOB
. Vanwege de regels van impliciete conversie, als u een VARCHAR2
. gebruikt als invoer zal Oracle proberen het om te zetten naar RAW
en zal hoogstwaarschijnlijk mislukken omdat deze conversie alleen werkt met hexadecimale tekenreeksen.
Als u VARCHAR2
. gebruikt dan moet je de invoer converteren naar een binair datatype of een CLOB
, bijvoorbeeld :
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;
u vindt aanvullende informatie in de documentatie van DBMS_CRYPTO.hash