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