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