स्ट्रिंग हैश विज़ुअलाइज़र
रंगीन ब्लॉकों के साथ MD5, SHA-1, SHA-256 और SHA-512 हैश की गणना और तुलना करने के लिए टेक्स्ट दर्ज करें।
यह कैसे काम करता है
- अपना टेक्स्ट दर्ज करें: कोई भी स्ट्रिंग टाइप या पेस्ट करें, पासवर्ड, फ़ाइल सामग्री, पहचानकर्ता या कोई भी टेक्स्ट।
- एल्गोरिथम चुनें: अपनी आवश्यकता के अनुसार MD5, SHA-1, SHA-256, SHA-384 या SHA-512 चुनें।
- हैश कॉपी करें: हैश मान तुरंत प्रकट होता है। संग्रहण, तुलना या सत्यापन के लिए इसे कॉपी करें।
स्ट्रिंग हैश जनरेटर क्यों इस्तेमाल करें?
हैशिंग कोई भी स्ट्रिंग एक निश्चित-लंबाई फ़िंगरप्रिंट में बदलती है जो उसकी सामग्री के लिए अनूठी होती है।
विशेषताएँ
- कई एल्गोरिथम: MD5, SHA-1, SHA-256, SHA-384 और SHA-512, सभी एक ही टूल में।
- वास्तविक समय हैशिंग: टाइप करते ही हैश तुरंत अपडेट होता है, बिना बटन क्लिक किए।
- केस-संवेदनशील: "Hello" और "hello" डिज़ाइन द्वारा अलग हैश उत्पन्न करते हैं।
- क्लिपबोर्ड पर कॉपी: एक-क्लिक हैश कॉपी।
- 100% ब्राउज़र में: स्ट्रिंग्स कभी आपके डिवाइस से नहीं जातीं, संवेदनशील सामग्री के लिए सुरक्षित।
अक्सर पूछे जाने वाले प्रश्न
कौन सा हैश एल्गोरिथम चुनें?
संवेदनशील उपयोगों (पासवर्ड, हस्ताक्षर) के लिए, SHA-256 या SHA-512 का उपयोग करें। MD5 और SHA-1 सुरक्षा के लिए अप्रचलित हैं परंतु अन्य जाँचों के लिए ठीक हैं।
क्या मैं इस टूल का उपयोग संग्रहण के लिए पासवर्ड हैश करने हेतु कर सकता हूँ?
स्ट्रिंग हैश आपको एक-तरफ़ा हैश देता है, परंतु पासवर्ड संग्रहीत करने के लिए bcrypt, Argon2 या scrypt जैसे कुंजी व्युत्पत्ति फ़ंक्शन का उपयोग करें।
क्या हैश उलटे जा सकते हैं?
नहीं। हैश फ़ंक्शन एक-तरफ़ा हैं, मूल स्ट्रिंग को उसके हैश से पुनः प्राप्त करना असंभव है।
हैश फ़ंक्शनों का 35-वर्षीय इतिहास: MD5 से BLAKE3 तक
क्रिप्टोग्राफिक हैश फ़ंक्शन ब्रेक-एंड-रिप्लेस चक्रों के लंबे अनुक्रम के माध्यम से विकसित हुए। MD5 को Ronald Rivest ने MD4 के उत्तराधिकारी के रूप में RFC 1321 (अप्रैल 1992) में प्रकाशित किया था। इसका 128-बिट आउटपुट एक दशक से अधिक समय तक पर्याप्त मजबूत माना जाता था जब तक Wang और Yu ने 2004 में पहली व्यावहारिक टक्कर प्रकाशित नहीं की। 2008 तक, शोधकर्ताओं ने एक दुष्ट SSL प्रमाणपत्र प्राधिकरण को नकली बनाने के लिए MD5 टक्करों का उपयोग किया था। SHA-1 को NSA द्वारा डिज़ाइन किया गया था और NIST द्वारा FIPS 180-1 (1995) में मानकीकृत किया गया था। इसका 160-बिट आउटपुट फरवरी 2017 तक चला, जब Google और CWI Amsterdam ने SHAttered हमले की घोषणा की, जिसमें दो PDF एक ही SHA-1 हैश के साथ उत्पन्न हुए। लागत: GPU पर लगभग 6,500 CPU-वर्ष के बराबर। SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), भी NSA से, FIPS 180-2 (अगस्त 2002) में प्रकाशित किया गया था। यह SHA-1 के समान Merkle-Damgård निर्माण का उपयोग करता है लेकिन बड़े राज्यों और अधिक राउंडों के साथ; आज पूर्ण संस्करणों पर कोई व्यावहारिक हमला मौजूद नहीं है। SHA-3 (Keccak, Bertoni et al. द्वारा) को NIST द्वारा एक सार्वजनिक प्रतियोगिता के बाद चुना गया और FIPS 202 (अगस्त 2015) में मानकीकृत किया गया। SHA-3 पूरी तरह से अलग स्पंज निर्माण का उपयोग करता है, उन लंबाई-विस्तार हमलों से प्रतिरक्षित जो SHA-2 को प्रभावित करते हैं। NIST परिवार के बाहर, BLAKE2 (Aumasson et al., 2012) और BLAKE3 (2020) SHA-3-वर्ग सुरक्षा MD5 की गति के साथ प्रदान करते हैं; BLAKE3 एक आधुनिक लैपटॉप पर लगभग एक सेकंड में 1 GB फ़ाइल को हैश करता है।
कौन सा एल्गोरिथ्म चुनें: एक त्वरित निर्णय तालिका
- MD5 (128 बिट)। 2004 से टूटा हुआ। गैर-सुरक्षा उपयोगों के लिए स्वीकार्य: कैश बस्टिंग, फ़ाइल डुप्लीकेशन जहाँ आप दोनों पक्षों को नियंत्रित करते हैं, आकस्मिक भ्रष्टाचार के विरुद्ध चेकसम। पासवर्ड, हस्ताक्षर, या किसी प्रतिकूल संदर्भ के लिए कभी भी उपयोग न करें।
- SHA-1 (160 बिट)। 2017 (SHAttered) से टूटा हुआ। Git अभी भी कमिट हैश के लिए इसका उपयोग करता है, लेकिन मार्च 2017 में Git ने ज्ञात हमले के पैटर्न को अस्वीकार करने के लिए टक्कर का पता लगाने (SHA-1DC) को एम्बेड करना शुरू किया। नए कोड के लिए SHA-1 से बचें।
- SHA-256 (256 बिट)। वर्तमान कार्यभार। Bitcoin, TLS प्रमाणपत्र, Linux पैकेज हस्ताक्षर, JWT हस्ताक्षर (HMAC-SHA256), और अधिकांश आधुनिक API द्वारा उपयोग किया जाता है। हार्डवेयर में तेज़ (Intel SHA एक्सटेंशन, ARMv8 क्रिप्टोग्राफी एक्सटेंशन)। सामान्य-उद्देश्य हैशिंग के लिए डिफ़ॉल्ट विकल्प।
- SHA-512 (512 बिट)। समान परिवार, बड़ा आउटपुट। 64-बिट मशीनों पर SHA-256 की तुलना में थोड़ा तेज़ क्योंकि इसकी आंतरिक स्थिति 64-बिट है। तब उपयोग करें जब आपको अतिरिक्त टक्कर प्रतिरोध की आवश्यकता हो या जब 256 बिट सीमित लगे (दुर्लभ)।
- SHA-3 / Keccak (224/256/384/512 बिट)। SHA-2 का मानकीकृत स्पंज विकल्प। SHA-2 को प्रभावित करने वाले लंबाई-विस्तार हमलों के लिए प्रतिरोधी (HMAC के बिना कुंजी वाले हैश बनाते समय प्रासंगिक)। अधिकांश CPU पर सॉफ़्टवेयर में SHA-256 की तुलना में धीमा लेकिन हमलों के एक अलग वर्ग से प्रतिरक्षित।
- BLAKE2 / BLAKE3। आधुनिक गैर-NIST विकल्प। BLAKE3 व्यापक रूप से उपलब्ध सबसे तेज़ क्रिप्टोग्राफिक हैश है, समानांतरता के कारण लगभग memcpy गति से हैशिंग।
b3sum, IPFS, और WireGuard VPN प्रोटोकॉल में उपयोग किया जाता है। अभी तकcrypto.subtleमें नहीं है, लेकिन पुस्तकालयों के माध्यम से उपलब्ध है।
जहाँ हैशिंग वास्तव में उपयोग होती है
- फ़ाइल अखंडता सत्यापन। Linux वितरण ISO डाउनलोड के बगल में SHA-256 योग प्रकाशित करते हैं ताकि आप सत्यापित कर सकें कि फ़ाइल पारगमन में दूषित नहीं हुई थी या किसी हमलावर द्वारा संशोधित नहीं की गई थी।
sha256sum -c ubuntu.sha25610 सेकंड में। - सामग्री-संबोधित भंडारण। Git प्रत्येक कमिट, ट्री और blob की पहचान के लिए SHA-1 (SHA-256 में परिवर्तित) का उपयोग करता है। IPFS, Docker इमेज (sha256:...), और Nix store पथ सभी सामग्री संबोधन का उपयोग करते हैं। हैश ही पहचानकर्ता है।
- कैश कुंजी। एक URL या क्रमबद्ध अनुरोध को हैश करना आपको एक निश्चित-लंबाई की कुंजी देता है जो किसी भी भंडारण प्रणाली में फिट होती है। Stripe, GitHub, हर CDN कैश लुकअप के लिए इसका उपयोग करता है।
- डुप्लीकेशन। बैकअप सिस्टम (Time Machine, Borg, Restic) फ़ाइल ब्लॉक को हैश करते हैं और केवल अद्वितीय वाले को संग्रहीत करते हैं। विभिन्न फ़ाइलों में दो समान 4 KB ब्लॉक एक संग्रहीत खंड पर मैप करते हैं।
- HTTP ETags। वेब सर्वर एक प्रतिक्रिया के हैश को
ETagहेडर के रूप में भेजते हैं। ब्राउज़र इसेIf-None-Matchके साथ वापस भेजते हैं; यदि अपरिवर्तित है तो सर्वर 304 लौटाता है। अनावश्यक डाउनलोड बचाता है। - JWT और वेबहुक हस्ताक्षर। JSON Web Tokens अपने पेलोड को HMAC-SHA256 (स्पेक में HS256) के साथ हस्ताक्षरित करते हैं। Stripe, GitHub, Twilio वेबहुक सभी अपने पेलोड पर हस्ताक्षर करते हैं ताकि आप सत्यापित कर सकें कि वे पारगमन में छेड़छाड़ नहीं की गईं।
- ब्लॉकचेन। Bitcoin कार्य का प्रमाण और ब्लॉक लिंकिंग के लिए डबल SHA-256 का उपयोग करता है। Ethereum Keccak-256 (एक SHA-3 वेरिएंट) का उपयोग करता है। ब्लॉकचेन की पूरी अवधारणा इस गुण पर निर्भर करती है कि एक ही हैश के साथ दो इनपुट खोजना कम्प्यूटेशनल रूप से असंभव है।
हैशिंग गलतियाँ जो पैसा खोती हैं या चीजें तोड़ती हैं
- पासवर्ड भंडारण के लिए SHA हैश का उपयोग। SHA-256 तेज़ है: एक आधुनिक GPU प्रति सेकंड ~10 अरब SHA-256 हैश की गणना करता है। लीक हुए डेटाबेस के साथ, एक हमलावर मिनटों में एक शब्दकोश में हर शब्द और सभी सामान्य परिवर्तनों को आज़मा सकता है। Argon2id (2015 पासवर्ड हैशिंग प्रतियोगिता विजेता), bcrypt, या scrypt का उपयोग करें। वे जानबूझकर धीमे और मेमोरी-हार्ड हैं।
- नमक भूलना। धीमे हैश के साथ भी, बिना नमक के हैश किया गया वही पासवर्ड उपयोगकर्ताओं में समान आउटपुट उत्पन्न करता है, रेनबो टेबल्स और डुप्लिकेट पासवर्ड के साइड-चैनल का पता लगाने को सक्षम करता है। हमेशा हैश के साथ प्रति-उपयोगकर्ता यादृच्छिक नमक संग्रहीत करें।
- SHA-2 पर लंबाई-विस्तार हमले। SHA-256 के साथ
hash(secret + message)कमजोर है: एक हमलावर जो हैश औरsecretकी लंबाई जानता है, बिनाsecretको जाने मनमाने डेटा को जोड़ सकता है और परिणामी हैश की गणना कर सकता है। इसके बजाय HMAC-SHA256 का उपयोग करें। SHA-3 और BLAKE2/3 प्रतिरक्षित हैं। - स्थिर समय में स्ट्रिंग तुलना। JavaScript में
==के साथ हैश (या किसी भी गुप्त मान) की तुलना करना समय के माध्यम से जानकारी लीक करता है: पहले बाइट मिसमैच पर बाहर निकलने वाला फ़ंक्शन हमलावरों को कई अनुरोधों पर बाइट दर बाइट सही हैश सीखने देता है। Node मेंcrypto.timingSafeEqual, Python मेंhmac.compare_digestका उपयोग करें। - एन्कोडिंग निर्दिष्ट किए बिना स्ट्रिंग हैशिंग। Python 3 में
sha256("hello")त्रुटि देता है (आपको बाइट्स चाहिए); Node में यह UTF-8 पर डिफ़ॉल्ट होता है; PHP और Java में डिफ़ॉल्ट भिन्न हो सकता है। विभिन्न एन्कोडिंग विभिन्न हैश उत्पन्न करती हैं। हैशिंग से पहले हमेशा स्पष्ट रूप से UTF-8 के रूप में एन्कोड करें। - «छोटे ID» के लिए हैश को छोटा करना। SHA-256 का 64-बिट टुकड़ा छोटे ID के लिए सुविधाजनक है लेकिन जन्मदिन विरोधाभास का अर्थ है कि टक्कर ~2³² आइटम (लगभग 4 बिलियन) पर दिखाई देती हैं, 2⁶⁴ नहीं। यदि आप छोटा करते हैं, तो अपेक्षित पैमाने पर टक्कर हैंडलिंग की योजना बनाएं।
- हैश आउटपुट को URL-सुरक्षित स्ट्रिंग के रूप में मानना। कच्चे हैश बाइट्स प्रिंट करने योग्य नहीं हैं। hex (सबसे आम) या base64url का उपयोग करें। मानक base64 में
+और/होते हैं जो URL और फ़ाइल नामों में टूटते हैं; base64url सुरक्षित संस्करण है।
अधिक अक्सर पूछे जाने वाले प्रश्न
MD5 और SHA-1 «टूटे» क्यों हैं यदि वे अभी भी हैश उत्पन्न करते हैं?
«टूटा» का अर्थ है कि एक हमलावर ब्रूट फोर्स से तेज़ी से टक्कर उत्पन्न कर सकता है। MD5 के लिए, आज एक लैपटॉप पर एक ही हैश के साथ दो इनपुट खोजने में सेकंड लगते हैं। SHA-1 के लिए, 2017 में 6,500 CPU-वर्ष लगे और तब से नाटकीय रूप से गिर गए हैं। हैश अभी भी यांत्रिक रूप से काम करते हैं; जो टूटा है वह सुरक्षा गारंटी है कि वे «टक्कर-प्रतिरोधी» हैं। गैर-प्रतिकूल उपयोगों (आकस्मिक भ्रष्टाचार के विरुद्ध आप पर भरोसा करने वाली फ़ाइल को चेकसम करना) के लिए MD5 अभी भी ठीक काम करता है। प्रतिद्वंद्वी से जुड़े किसी भी काम के लिए, दोनों असुरक्षित हैं।
क्या मुझे SHA-256 को तोड़ने वाले क्वांटम कंप्यूटरों के बारे में चिंता करनी चाहिए?
जितना आप सोच सकते हैं उससे कम। Grover का एल्गोरिथ्म 256-बिट हैश के विरुद्ध preimage हमलों को 2²⁵⁶ से 2¹²⁸ शास्त्रीय-समकक्ष कार्य तक तेज करता है, जो अभी भी प्रभावी रूप से असंभव है। सममित प्राथमिकताएं (हैश, AES) कुंजी/आउटपुट आकार दोगुना करके क्वांटम कंप्यूटिंग से बचती हैं। सार्वजनिक-कुंजी क्रिप्टो (RSA, ECDSA) वह है जो क्वांटम हमलों में कठिन गिरता है, इसलिए NIST पोस्ट-क्वांटम मानक अगस्त 2024 में प्रकाशित (ML-KEM, ML-DSA, SLH-DSA)। यदि आप आज SHA-256 का उपयोग कर रहे हैं, पोस्ट-क्वांटम युग में SHA-512 पर्याप्त से अधिक होगा।
हैश और HMAC में क्या अंतर है?
एक हैश (SHA-256) कुंजीहीन है: इनपुट के साथ कोई भी समान आउटपुट की गणना कर सकता है। एक HMAC (हैश-आधारित संदेश प्रमाणीकरण कोड) हैश को गुप्त कुंजी के साथ लपेटता है, ताकि केवल कुंजी जानने वाला कोई व्यक्ति टैग की गणना या सत्यापन कर सके। RFC 2104 (1997) में परिभाषित, HMAC सममित रूप से एक संदेश «हस्ताक्षर» करने का मानक तरीका है (प्रेषक और रिसीवर एक रहस्य साझा करते हैं)। वेबहुक हस्ताक्षर, JWT HS256, API अनुरोध हस्ताक्षर के लिए HMAC-SHA256 का उपयोग करें। secret + message पर सादा SHA-256 लंबाई-विस्तार के कारण असुरक्षित है।
विभिन्न पुस्तकालय एक ही स्ट्रिंग के लिए विभिन्न हैश क्यों देते हैं?
तीन सामान्य कारण। पहला, वर्ण एन्कोडिंग: UTF-8 बनाम UTF-16 बनाम Latin-1 गैर-ASCII स्ट्रिंग के लिए अलग-अलग बाइट्स देते हैं, इसलिए अलग-अलग हैश। हमेशा स्पष्ट रूप से एन्कोड करें। दूसरा, लाइन एंडिंग: "hello\n" और "hello\r\n" अलग-अलग हैश करते हैं; Windows-vs-Unix फ़ाइल चेकसम अक्सर इस कारण से भिन्न होते हैं। तीसरा, आउटपुट प्रारूप: लोअरकेस hex बनाम अपरकेस hex बनाम base64 एक अलग मान की तरह दिखता है लेकिन समान बाइट्स का प्रतिनिधित्व करता है। तुलना से पहले इनपुट और आउटपुट प्रारूप सामान्य करें।
जब मैं यहाँ हैश करता हूं तो क्या मेरा इनपुट सर्वर पर भेजा जाता है?
नहीं। सभी चार हैश आपके ब्राउज़र में बिल्ट-इन Web Crypto API (crypto.subtle.digest) का उपयोग करके गणना की जाती हैं। DevTools में नेटवर्क टैब खोलें और इनपुट में टाइप करें, आप शून्य आउटबाउंड अनुरोध देखेंगे। प्रमाण-पत्र, टोकन, या किसी भी निजी मान के लिए सुरक्षित जिसे आप अपने डिवाइस को छोड़ने के बिना हैश करना चाहते हैं।