Le package DBMS_CRYPTO est le package correct pour générer des hachages. Il n'est pas accordé à PUBLIC par défaut, vous devrez l'accorder spécifiquement (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
Le résultat de cette fonction est de type RAW
. Vous pouvez le stocker dans un RAW
colonne ou convertissez-la en VARCHAR2
en utilisant le RAWTOHEX
ou UTL_ENCODE.BASE64_ENCODE
fonctions.
Le HASH
la fonction est surchargée pour accepter trois types de données en entrée :RAW
, CLOB
et BLOB
. En raison des règles de conversion implicite, si vous utilisez un VARCHAR2
en entrée, Oracle essaiera de le convertir en RAW
et échouera très probablement puisque cette conversion ne fonctionne qu'avec des chaînes hexadécimales.
Si vous utilisez VARCHAR2
ensuite, vous devez convertir l'entrée en un type de données binaire ou un CLOB
, par exemple :
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;
vous trouverez des informations complémentaires dans la documentation de DBMS_CRYPTO.hash