Paket DBMS_CRYPTO adalah paket yang benar untuk menghasilkan hash. Itu tidak diberikan kepada PUBLIC secara default, Anda harus memberikannya secara khusus (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).
Hasil dari fungsi ini adalah tipe data RAW . Anda dapat menyimpannya di RAW kolom atau ubah menjadi VARCHAR2 menggunakan RAWTOHEX atau UTL_ENCODE.BASE64_ENCODE fungsi.
HASH fungsi kelebihan beban untuk menerima tiga tipe data sebagai input:RAW , CLOB dan BLOB . Karena aturan konversi implisit, jika Anda menggunakan VARCHAR2 sebagai input, Oracle akan mencoba mengubahnya menjadi RAW dan kemungkinan besar akan gagal karena konversi ini hanya berfungsi dengan string heksadesimal.
Jika Anda menggunakan VARCHAR2 kemudian, Anda perlu mengonversi input ke tipe data biner atau CLOB , misalnya :
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;
Anda akan menemukan informasi tambahan dalam dokumentasi DBMS_CRYPTO.hash