पैकेज DBMS_CRYPTO हैश उत्पन्न करने के लिए सही पैकेज है। यह डिफ़ॉल्ट रूप से सार्वजनिक को नहीं दिया जाता है, आपको इसे विशेष रूप से देना होगा (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
. के दस्तावेज़ीकरण में अतिरिक्त जानकारी मिलेगी