El paquete DBMS_CRYPTO es el paquete correcto para generar hashes. No se otorga a PUBLIC de forma predeterminada, deberá otorgarlo específicamente (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
El resultado de esta función es de tipo de datos RAW
. Puedes almacenarlo en un RAW
columna o convertirlo a VARCHAR2
usando el RAWTOHEX
o UTL_ENCODE.BASE64_ENCODE
funciones.
El HASH
la función está sobrecargada para aceptar tres tipos de datos como entrada:RAW
, CLOB
y BLOB
. Debido a las reglas de conversión implícita, si usa un VARCHAR2
como entrada, Oracle intentará convertirlo a RAW
y lo más probable es que falle, ya que esta conversión solo funciona con cadenas hexadecimales.
Si usa VARCHAR2
luego, debe convertir la entrada a un tipo de datos binario o un CLOB
, por ejemplo:
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;
encontrará información adicional en la documentación de DBMS_CRYPTO.hash