O pacote DBMS_CRYPTO é o pacote correto para gerar hashes. Não é concedido a PUBLIC por padrão, você terá que conceder especificamente (
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ). O resultado desta função é do tipo de dados
RAW . Você pode armazená-lo em um RAW coluna ou converta para VARCHAR2 usando o RAWTOHEX ou UTL_ENCODE.BASE64_ENCODE funções. O
HASH a função está sobrecarregada para aceitar três tipos de dados como entrada:RAW , CLOB e BLOB . Devido às regras de conversão implícita, se você usar um VARCHAR2 como entrada, o Oracle tentará convertê-lo para RAW e provavelmente falhará, pois essa conversão só funciona com strings hexadecimais. Se você usar
VARCHAR2 então, você precisa converter a entrada para um tipo de dados binário ou um CLOB , por exemplo :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;
você encontrará informações adicionais na documentação de
DBMS_CRYPTO.hash