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