पैकेज 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 . के दस्तावेज़ीकरण में अतिरिक्त जानकारी मिलेगी