हैश जनरेटर

किसी भी टेक्स्ट के MD5, SHA-1, SHA-256 और SHA-512 हैश, Web Crypto API का उपयोग करके आपके ब्राउज़र में लाइव कैलकुलेट किए जाते हैं। आपके टाइप किए गए टेक्स्ट को कहीं नहीं भेजा जाता।

कौन-सा इस्तेमाल करें?

यह इस बात पर निर्भर करता है कि आप हैश किसलिए बना रहे हैं।

चेकसम और इंटीग्रिटी जांच के लिए SHA-256 सुरक्षित डिफ़ॉल्ट विकल्प है। MD5 और SHA-1 दोनों क्रिप्टोग्राफ़िक रूप से टूट चुके हैं (कोलिज़न बनाना व्यावहारिक रूप से संभव है), ये यह जांचने के लिए ठीक हैं कि ट्रांसफ़र के दौरान फ़ाइल करप्ट तो नहीं हुई, लेकिन पासवर्ड स्टोरेज जैसे किसी भी सुरक्षा-संवेदनशील काम के लिए उपयुक्त नहीं हैं।

पासवर्ड के लिए नहीं

इनमें से किसी भी एल्गोरिद्म का उपयोग पासवर्ड स्टोर करने के लिए नहीं करना चाहिए—ये जानबूझकर तेज़ बनाए गए हैं, जो इस काम के लिए बिल्कुल गलत है। पासवर्ड स्टोरेज के लिए bcrypt, scrypt या Argon2 जैसे धीमे, खास तौर पर इसी काम के लिए बनाए गए एल्गोरिद्म चाहिए।

यह कैसे काम करता है

SHA-1, SHA-256 और SHA-512 आपके ब्राउज़र की बिल्ट-इन crypto.subtle.digest API से कैलकुलेट होते हैं: आपका टेक्स्ट TextEncoder से UTF-8 बाइट्स में बदला जाता है, नेटिव रूप से डाइजेस्ट किया जाता है, और नतीजे को लोअरकेस हेक्स में फ़ॉर्मेट किया जाता है। MD5 अपवाद है: Web Crypto जानबूझकर इसे लागू नहीं करता (क्योंकि यह क्रिप्टोग्राफ़िक रूप से टूट चुका है), इसलिए यह टूल सिर्फ़ MD5 के लिए RFC 1321 का एक छोटा जावास्क्रिप्ट इम्प्लीमेंटेशन शामिल करता है। चारों हर कीस्ट्रोक पर फिर से कैलकुलेट होते हैं, और अगर आप डाइजेस्ट पूरा होने से तेज़ टाइप करें तो पुराने नतीजों को हटाने वाला एक गार्ड भी है।

टर्मिनल से मिलान करते समय एक व्यावहारिक झोल: यह टूल ठीक उन्हीं बाइट्स को हैश करता है जो आपने टाइप कीं, बिना किसी ट्रेलिंग न्यूलाइन के। echo "hello" | sha256sum कभी मैच नहीं करेगा, क्योंकि echo एक न्यूलाइन जोड़ देता है और आप असल में "hello\n" हैश कर रहे होते हैं। इसकी जगह printf '%s' "hello" | sha256sum इस्तेमाल करें और डाइजेस्ट बिल्कुल मैच करेंगे। यही झोल भाषाओं और टूल्स के बीच ज़्यादातर "मेरा हैश क्यों नहीं मिल रहा" वाले मामलों की वजह है।

चूँकि crypto.subtle ब्राउज़र के अंदर ही चलता है, इसलिए डाइजेस्ट कैलकुलेट करने के लिए कहीं कुछ भेजने की ज़रूरत नहीं। आप खुद पुष्टि कर सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलें और इनपुट में कोई पासवर्ड या API की टाइप करें। कोई रिक्वेस्ट नहीं दिखेगी, आपका टेक्स्ट टैब में ही रहता है।