Das Paket DBMS_CRYPTO ist das richtige Paket zum Generieren von Hashes. Es wird PUBLIC standardmäßig nicht gewährt, Sie müssen es speziell gewähren (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
Das Ergebnis dieser Funktion ist vom Datentyp RAW
. Sie können es in einem RAW
speichern -Spalte oder wandeln Sie sie in VARCHAR2
um mit dem RAWTOHEX
oder UTL_ENCODE.BASE64_ENCODE
Funktionen.
Der HASH
Die Funktion ist überladen, um drei Datentypen als Eingabe zu akzeptieren:RAW
, CLOB
und BLOB
. Aufgrund der Regeln der impliziten Konvertierung, wenn Sie einen VARCHAR2
verwenden Als Eingabe wird Oracle versuchen, sie in RAW
zu konvertieren und wird höchstwahrscheinlich fehlschlagen, da diese Konvertierung nur mit hexadezimalen Zeichenketten funktioniert.
Wenn Sie VARCHAR2
verwenden dann müssen Sie die Eingabe in einen binären Datentyp oder ein CLOB
konvertieren , zum Beispiel :
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;
weitere Informationen finden Sie in der Dokumentation von DBMS_CRYPTO.hash