Пакетът DBMS_CRYPTO е правилният пакет за генериране на хешове. Не се предоставя на PUBLIC по подразбиране, ще трябва да го предоставите специално (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).
Резултатът от тази функция е от тип данни RAW . Можете да го съхранявате в RAW колона или го преобразувайте в VARCHAR2 използвайки RAWTOHEX или UTL_ENCODE.BASE64_ENCODE функции.
HASH функцията е претоварена, за да приеме три типа данни като вход:RAW , CLOB и BLOB . Поради правилата за имплицитно преобразуване, ако използвате VARCHAR2 като вход, Oracle ще се опита да го преобразува в RAW и най-вероятно ще се провали, тъй като това преобразуване работи само с шестнадесетични низове.
Ако използвате VARCHAR2 след това трябва да преобразувате входа в двоичен тип данни или CLOB , например :
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;
ще намерите допълнителна информация в документацията на DBMS_CRYPTO.hash