उपयोग कैसे करें
- टेक्स्ट दर्ज करें, बाइट डालने के लिए इनपुट को “हेक्स” पर करें, या कोई फ़ाइल चुनने के लिए “फ़ाइल खोलें” पर क्लिक करें।
- SHA-1 पहले से चुना होता है; अगर आप इसकी तुलना किसी दूसरे हैश फ़ंक्शन से करना चाहते हैं, तो “एल्गोरिदम” में कोई दूसरा विकल्प चुनें।
- “hex (छोटे अक्षर)” (जैसा sha1sum और Git दिखाते हैं), “HEX (बड़े अक्षर)” या “Base64” चुनें।
- अपेक्षित SHA-1 को “इससे तुलना करें” फ़ील्ड में पेस्ट करें; पेज “मेल खाता है” या “मेल नहीं खाता” दिखाता है।
SHA-1 क्या है?
SHA-1 (Secure Hash Algorithm 1) को NSA ने डिज़ाइन किया था और NIST ने 1995 में FIPS 180-1 के रूप में प्रकाशित किया; इसने कुछ ही समय चले SHA-0 की जगह ली। अब यह FIPS 180-4 में परिभाषित है, और RFC 3174 इसे उदाहरण C कोड के साथ समझाता है। SHA-1 512-बिट ब्लॉक को 80 राउंड में प्रोसेस करता है और 160-बिट डाइजेस्ट देता है: 40 हेक्स अक्षर या 28 Base64 अक्षर।
किसी भी हैश की तरह SHA-1 एकतरफ़ा है। डाइजेस्ट को डिक्रिप्ट नहीं किया जा सकता, केवल अनुमानों को हैश करके उससे मिलाया जा सकता है। इसी तरह 2012 में LinkedIn से लीक हुए बिना सॉल्ट वाले SHA-1 पासवर्ड हैश बड़ी संख्या में क्रैक किए गए थे; पासवर्ड को Argon2, scrypt, bcrypt या PBKDF2 से ही स्टोर किया जाना चाहिए।
SHAttered: SHA-1 अप्रचलित क्यों है
फ़रवरी 2017 में CWI Amsterdam और Google के शोधकर्ताओं ने SHAttered प्रकाशित किया, जो SHA-1 का पहला असली कॉलिज़न (टकराव) था: एक ही हैश वाली दो अलग-अलग PDF फ़ाइलें, जिन्हें लगभग 2^63 SHA-1 गणनाओं से ढूँढा गया। 2020 में Gaëtan Leurent और Thomas Peyrin ("SHA-1 is a Shambles") ने chosen-prefix कॉलिज़न की मदद से PGP कुंजियों पर जाली SHA-1 सिग्नेचर बनाकर दिखाए, और इसकी लागत अच्छे संसाधनों वाले किसी हमलावर की पहुँच में थी।
- सार्वजनिक CA ने 2016 में SHA-1 वाले TLS सर्टिफ़िकेट जारी करना बंद कर दिया, और ब्राउज़रों ने 2017 की शुरुआत में उन पर भरोसा करना बंद कर दिया।
- NIST ने 2013 से नए डिजिटल सिग्नेचर के लिए SHA-1 की अनुमति नहीं दी है और 2030 के अंत तक इसे पूरी तरह हटाने की योजना बनाई है।
- ज़्यादातर Git रिपॉज़िटरी अब भी ऑब्जेक्ट को SHA-1 से पहचानती हैं, जिसकी गणना एक मज़बूत (hardened) इम्प्लीमेंटेशन से होती है जो कॉलिज़न की कोशिशों को पकड़ लेता है; Git ऐसी रिपॉज़िटरी भी बना सकता है जो SHA-256 का उपयोग करती हैं।
कॉलिज़न HMAC को नहीं तोड़ते, इसलिए HMAC-SHA1 अब भी TOTP कोड और पुराने वेबहुक सिग्नेचर में मिलता है; इसकी गणना HMAC जनरेटर से करें। किसी भी नए काम के लिए SHA-256 चुनें।
Git ऑब्जेक्ट ID, Base64 और टेक्स्ट एनकोडिंग
Git ब्लॉब ID केवल फ़ाइल का SHA-1 नहीं होती। Git एक हेडर हैश करता है, जिसमें blob, एक स्पेस, बाइट में आकार और एक शून्य बाइट होता है, और उसके बाद सामग्री। इसे यहाँ दोहराने के लिए इनपुट को हेक्स पर करें और हेडर के ये बाइट भी शामिल करें: hello और एक न्यूलाइन के लिए हेक्स इनपुट 626c6f6220360068656c6c6f0a है।
$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a
SHA-1 आमतौर पर छोटे अक्षरों वाले हेक्स में दिखाया जाता है। Base64 WebSocket हैंडशेक में दिखता है, जहाँ Sec-WebSocket-Accept क्लाइंट की कुंजी और एक निश्चित GUID को जोड़कर बने मान का Base64 SHA-1 होता है, और LDAP के {SHA} पासवर्ड मानों में भी। याद रखें कि हैश बाइट पर बनता है: जिस टेक्स्ट में एक्सेंट वाले अक्षर हों, उसका UTF-8 में एक SHA-1 होता है और Windows-1252 में दूसरा।
कमांड लाइन और कोड में SHA-1
sha1sum file.zip # Linux
shasum file.zip # macOS (SHA-1 डिफ़ॉल्ट है)
certutil -hashfile file.zip SHA1 # Windows
Get-FileHash file.zip -Algorithm SHA1 # PowerShell
# Python
hashlib.sha1(data).hexdigest()
// Node.js
crypto.createHash('sha1').update(data).digest('hex')
यह पेज SHA-1 की गणना आपके ब्राउज़र में बने Web Crypto API से करता है, इसलिए इनपुट कभी आपके डिवाइस से बाहर नहीं जाता। “सभी एल्गोरिदम” तालिका उसी इनपुट के MD5, SHA-256, SHA-384, SHA-512 और CRC मान दिखाती है।
उदाहरण
| इनपुट (UTF-8) | SHA-1 |
|---|---|
Hello, World! | 0a0a9f2a6772942557ab5355d76af442f8f65e01 |
Base64.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 440ee0853ad1e99f962b63e459ef992d7c211722 |
अक्सर पूछे जाने वाले प्रश्न
क्या SHA-1 का उपयोग अब भी सुरक्षित है?
वहाँ नहीं, जहाँ हमलावर इनपुट चुन सकता है या उसे प्रभावित कर सकता है, जैसे सिग्नेचर और सर्टिफ़िकेट, क्योंकि SHA-1 कॉलिज़न बनाए जा सकते हैं। यह अब भी आकस्मिक ख़राबी पकड़ लेता है, और HMAC-SHA1 पर कॉलिज़न का असर नहीं पड़ता। नए काम के लिए SHA-256 या SHA-512 का उपयोग करें।
क्या SHA-1 हैश को उलटा जा सकता है?
नहीं। इसमें न कोई कुंजी है, न डिक्रिप्शन। लुकअप साइटें केवल वही इनपुट ढूँढ़ पाती हैं जो आम शब्दों और लीक हुए पासवर्ड की उनकी तालिकाओं में पहले से हों; इसीलिए लंबा रैंडम इनपुट उनसे सुरक्षित रहता है, जबकि छोटा पासवर्ड नहीं।
SHA-1 हैश कितना लंबा होता है?
= होता है। RIPEMD-160 की लंबाई भी यही है, और MySQL 4.1+ के पासवर्ड हैश में एक तारांकन (*) के बाद 40 हेक्स अक्षर होते हैं। हैश आइडेंटिफ़ायर किसी दी गई स्ट्रिंग के लिए संभावित एल्गोरिदम की सूची देता है।किसी फ़ाइल को प्रकाशित SHA-1 से कैसे जाँचें?
फ़ाइल खोलें, फिर प्रकाशित मान को “इससे तुलना करें” फ़ील्ड में पेस्ट करें। बड़े या छोटे अक्षरों वाला हेक्स और Base64, सभी स्वीकार किए जाते हैं, और पेज “मेल खाता है” या “मेल नहीं खाता” दिखाता है।
SHA-1 और SHA-256 में क्या अंतर है?
दोनों NIST ने प्रकाशित किए हैं, लेकिन SHA-256 नए SHA-2 परिवार का हिस्सा है, उसका आउटपुट 256 बिट का है और उस पर कोई व्यावहारिक हमला ज्ञात नहीं है। SHA-1 का आउटपुट छोटा है और उसका कॉलिज़न प्रतिरोध टूट चुका है।