डेटा का फ़िंगरप्रिंट
हैश फ़ंक्शन कोई भी इनपुट (एक शब्द, एक दस्तावेज़, 4 GB का वीडियो) लेकर उसे तय लंबाई की छोटी स्ट्रिंग में बदल देता है, जिसे हैश, डाइजेस्ट या checksum कहते हैं। एक ही इनपुट हमेशा एक ही हैश देता है, और ज़रा-सा बदलाव बिल्कुल अलग हैश देता है:
| इनपुट | SHA-256 हैश |
hello | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
Hello | 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 |
hello! | ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b |
एक बड़ा अक्षर या विस्मयादिबोधक चिह्न नतीजे का हर अक्षर बदल देता है। हैश जनरेटर में आज़माएँ।
अच्छे हैश फ़ंक्शन की ख़ूबियाँ
- निश्चित: एक ही इनपुट हर कंप्यूटर पर एक ही हैश देता है।
- एकतरफ़ा: हैश से वापस इनपुट तक नहीं पहुँचा जा सकता।
- टकराव-रोधी: एक ही हैश वाले दो अलग इनपुट ढूँढना व्यवहार में असंभव होना चाहिए।
- जल्दी निकलने वाला, checksum के लिए, जो काम का है, और यही वजह है कि तेज़ हैश पासवर्ड के लिए गलत हैं (नीचे देखें)।
हैश करना एन्क्रिप्शन नहीं है
एन्क्रिप्शन दोनों तरफ़ चलता है: कुंजी से मूल वापस मिल जाता है। हैश की कोई कुंजी नहीं होती और उसे उलटा नहीं जा सकता। वह सिर्फ़ बताता है कि कोई चीज़ मेल खाती है या नहीं। Base64 इनसे अलग है: बस एक एन्कोडिंग, जिसे कोई भी डिकोड कर सकता है।
आम एल्गोरिदम
| एल्गोरिदम | लंबाई | स्थिति |
| MD5 | 128 बिट (32 हेक्स अक्षर) | 2004 से टूटा हुआ; सिर्फ़ अनजाने नुकसान के लिए |
| SHA-1 | 160 बिट (40 हेक्स अक्षर) | टूटा हुआ: पहला असली टकराव 2017 में प्रकाशित हुआ |
| SHA-256 | 256 बिट (64 हेक्स अक्षर) | सुरक्षित; आज का स्टैंडर्ड विकल्प |
| SHA-512 | 512 बिट (128 हेक्स अक्षर) | सुरक्षित; 64-बिट कंप्यूटर पर अक्सर SHA-256 से तेज़ |
हर एक में शब्द hello:
- MD5:
5d41402abc4b2a76b9719d911017c592 - SHA-1:
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d - SHA-256:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
MD5 और SHA-1 के "टूटने" का मतलब
MD5 और SHA-1 में शोधकर्ता जान-बूझकर एक ही हैश वाली दो अलग फ़ाइलें बना सकते हैं। इससे हमलावर किसी हानिरहित फ़ाइल को मेल खाते checksum वाली हानिकारक फ़ाइल से बदल सकता है, या साइन किए दस्तावेज़ की नकल बना सकता है। दोनों में से कोई उलटा नहीं जा सकता, और अनजाना नुकसान अब भी हैश बदल देता है, इसलिए MD5 checksum टूटे डाउनलोड को अब भी पकड़ता है। बस यह साबित नहीं कर सकता कि किसी ने फ़ाइल से छेड़छाड़ नहीं की।
SHA-256 और SHA-512, 2001 में प्रकाशित SHA-2 परिवार का हिस्सा हैं, और इन पर कोई व्यावहारिक हमला ज्ञात नहीं है। 2015 में स्टैंडर्ड बना SHA-3 एक अलग डिज़ाइन है, जो बैकअप के तौर पर तैयार है।
हैश कहाँ इस्तेमाल होते हैं
- डाउनलोड जाँचना: डेवलपर अपनी फ़ाइलों का SHA-256 प्रकाशित करते हैं; आपका मेल खाए तो फ़ाइल वही है। देखें checksum कैसे जाँचें।
- डिजिटल सिग्नेचर और HTTPS सर्टिफ़िकेट: दस्तावेज़ या सर्टिफ़िकेट का हैश निकाला जाता है, और हैश पर साइन होता है।
- Git: हर कमिट और फ़ाइल अपने हैश से पहचानी जाती है। Git लंबे समय से SHA-1 इस्तेमाल करता है और अब SHA-256 भी सपोर्ट करता है।
- Bitcoin और दूसरी ब्लॉकचेन: ब्लॉक SHA-256 से जुड़े होते हैं।
- डुप्लिकेट फ़ाइलें ढूँढना: एक ही SHA-256 वाली दो फ़ाइलें एक ही फ़ाइल हैं।
हैश और पासवर्ड
साइटों को आपका पासवर्ड कभी सेव नहीं करना चाहिए, सिर्फ़ उसका हैश; लॉगिन पर वे आपके टाइप किए का हैश निकालकर मिलाती हैं। पर इसके लिए SHA-256 सही औज़ार नहीं है: यह इतना तेज़ है कि लीक हुए डेटाबेस वाला हमलावर हर सेकंड अरबों अंदाज़े लगा सकता है। पासवर्ड के लिए इसी काम के लिए बने धीमे, सॉल्ट वाले हैश चाहिए, जैसे bcrypt, scrypt या Argon2। सॉल्ट एक रैंडम मान है जो हैश करने से पहले हर पासवर्ड में जोड़ा जाता है, ताकि एक ही पासवर्ड वाले दो लोगों के हैश अलग हों।
आज़माएँ
हैश जनरेटर किसी भी टेक्स्ट या फ़ाइल के MD5, SHA-1, SHA-256, SHA-384 और SHA-512 एक साथ, आपके ब्राउज़र में निकालता है, और उन्हें प्रकाशित checksum से मिलाता है।