# हैश और चेकसम — MD5, SHA-1, SHA-256, SHA-512

डाउनलोड की गई फ़ाइल को उस नंबर से मिलाइए जो बनाने वाले ने छापा है, बिना उसे किसी को भेजे।

> किसी भी फ़ाइल का MD5, SHA-1, SHA-256, SHA-384 या SHA-512 निकालिए और डाउनलोड पेज पर दिए चेकसम से मिलाइए। फ़ाइल आपके ब्राउज़र में पढ़ी जाती है और किसी भी साइज़ में अपलोड नहीं होती।

यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/hash-checksum/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।

## यह टूल फ़ाइलें **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।

चेकसम आपकी फ़ाइल के बाइट्स पर किया गया गणित है, और वह गणित यहीं, इसी पेज में, आपके अपने प्रोसेसर पर होता है। फ़ाइल डिस्क से चार-चार मेगाबाइट में पढ़ी जाती है और हर टुकड़ा गिने जाते ही छोड़ दिया जाता है, इसलिए पूरी कॉपी कहीं बनती ही नहीं। न मेमोरी में, सर्वर पर तो बिलकुल नहीं। इस पेज के दूसरी तरफ़ कोई सर्वर है ही नहीं जिसे फ़ाइल भेजी जा सके, भले ही यहाँ कुछ भेजना चाहे।

- ✗ कोई अपलोड नहीं
- ✗ साइज़ की कोई हद नहीं
- ✓ ऑफ़लाइन भी चलता है
- ✓ ओपन सोर्स
- ✓ फ़ाइलें आपके डिवाइस पर ही रहती हैं

## चेकसम से डाउनलोड कैसे जाँचें

1. **फ़ाइल चुनिए।** उसे डिब्बे पर खींचकर छोड़िए या खुद चुनिए। वह टुकड़ों में सीधे आपकी डिस्क से पढ़ी जाती है; इस दौरान कुछ भी कहीं नहीं जाता, और ऐसा कोई साइज़ नहीं जहाँ पेज हार मान ले।
2. **पढ़ने दीजिए।** MD5 और SHA-256 डिफ़ॉल्ट रूप से, एक ही बार पढ़ने में निकल आते हैं। पट्टी बताती है कि कहाँ तक पहुँचा और कितनी रफ़्तार से चल रहा है। बड़ी डिस्क इमेज में करीब उतना ही समय लगता है जितना उसे कॉपी करने में लगता, क्योंकि पढ़ाई उतनी ही है।
3. **जो आना चाहिए वह चिपकाइए।** डाउनलोड पेज ने जो दिया है, जिस भी रूप में दिया हो: सिर्फ़ हेक्स, `sha256sum` के आउटपुट की एक लाइन, पूरी `SHA256SUMS` फ़ाइल, या स्क्रिप्ट टैग से उठाया गया `integrity` एट्रिब्यूट। कौन सा एल्गोरिदम है यह लंबाई से तय होता है, और सही डिब्बी अपने आप टिक हो जाती है।
4. **रंग नहीं, वाक्य पढ़िए।** पेज एक वाक्य में बताता है कि यह वही फ़ाइल है या नहीं जिसका वह चेकसम है। मिल जाए तो बाइट हूबहू वही हैं जो बनाने वाले ने नापे थे। न मिले तो वही नहीं हैं, और खोलने से पहले डाउनलोड दोबारा कर लेना बेहतर है।
5. **ज़रूरत हो तो चेकसम साथ ले जाइए।** एक कॉपी कीजिए, सब कॉपी कीजिए, या एक छोटी टेक्स्ट फ़ाइल में सहेज लीजिए। सहेजने का रूप वही है जो कमांड लाइन के टूल लिखते हैं, यानी एल्गोरिदम का नाम आगे। इस तरह नंबर के साथ एल्गोरिदम का नाम भी साथ चलता है।

## विस्तार से

[चेकसम से डाउनलोड कैसे जाँचें](https://abox.tools/hi/guides/verify-a-file-checksum/): विंडोज़, मैक और लिनक्स पर या ब्राउज़र में MD5 या SHA-256 चेकसम मिलाने का तरीका, मिल जाने से सचमुच क्या साबित होता है, और वह गलती जिससे पूरी कसरत बेकार हो जाती है।

## बॉक्स में और भी टूल

- [पासवर्ड और पासफ़्रेज़ जनरेटर](https://abox.tools/hi/password-generator/): यहीं बनता है, आपके अपने ब्राउज़र से, और कहीं नहीं भेजा जाता। कुछ भी सेव नहीं होता और कोई हिस्ट्री नहीं रहती।
- [JSON फ़ॉर्मैटर](https://abox.tools/hi/json-formatter/): JSON, XML, HTML, CSS और YAML, सजाए हुए या बदले हुए। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।
- [YAML से JSON कन्वर्टर](https://abox.tools/hi/yaml-to-json/): दोनों दिशाएँ, और हर दिशा की कीमत भी बताई जाती है। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।
- [XML फ़ॉर्मैटर](https://abox.tools/hi/xml-formatter/): पढ़ने के लिए सजाया गया XML या भेजने के लिए दबाकर सपाट किया गया XML, और दोनों तरफ़ JSON में बदला हुआ। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।

## सवाल

### क्या मेरी फ़ाइल कहीं अपलोड होती है?

नहीं। आपका अपना ब्राउज़र उसे आपकी डिस्क से पढ़ता है और आपका अपना प्रोसेसर चार-चार मेगाबाइट में हिसाब लगाता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की `Content-Security-Policy` में हर वह पता लिखा है जिससे वह बात कर सकता है: उनमें कोई हमारा नहीं। नेटवर्क बंद कीजिए, यह फिर भी चलता रहेगा।

### क्या साइज़ की कोई हद है?

नहीं। फ़ाइल कभी पूरी कहीं नहीं रखी जाती: वह टुकड़ों में पढ़ी जाती है और हर टुकड़ा गिनकर छोड़ दिया जाता है, इसलिए चालीस गीगाबाइट की डिस्क इमेज भी उतनी ही थोड़ी मेमोरी लेती है जितनी एक टेक्स्ट फ़ाइल। खर्च होता है समय, और कितना, यह पेज चलते-चलते बताता रहता है। \
\
एल्गोरिदम यहाँ लिखे होने की वजह भी यही है, वरना ब्राउज़र के `crypto.subtle.digest` को दे देना तेज़ पड़ता। वह कॉल पूरे संदेश को एक ही बफ़र में लेती है और उसे फ़ाइल टुकड़ों में देने का कोई रास्ता नहीं। उसे इस्तेमाल करने का मतलब होता कि सबसे बड़ी जाँचने लायक फ़ाइल इस बात पर निर्भर हो जाती कि इस टैब को कितनी मेमोरी मिल गई। फ़ोन पर वह कुछ सौ मेगाबाइट है, और लोग सबसे ज़्यादा जाँचना डिस्क इमेज ही चाहते हैं।

### चेकसम मिल गया। इससे साबित क्या हुआ?

यह कि आपकी डिस्क पर पड़े बाइट वही हैं जो किसी के सामने थे जब उसने वह नंबर लिखा था। इससे ज़्यादा कुछ नहीं, और इस हद के बारे में साफ़ रहना ज़रूरी है। \
\
साबित यह हुआ कि डाउनलोड बीच में कटा नहीं, किसी खराब डिस्क ने उसे बिगाड़ा नहीं, और रास्ते में उसे बदला नहीं गया। यह **साबित नहीं** हुआ कि फ़ाइल सुरक्षित है, क्योंकि बनाने वाला मैलवेयर को भी उतनी ही सफ़ाई से नाप सकता है। और अगर चेकसम उसी पेज से, उसी कनेक्शन पर आया है जिससे फ़ाइल आई है, तो बहुत कम साबित होता है: जो एक को बदल सकता था वह दूसरे को भी बदल सकता था। चेकसम की कीमत तब सबसे ज़्यादा होती है जब वह फ़ाइल से अलग रास्ते से आपके पास आए: साइन की हुई `SHA256SUMS` फ़ाइल, किसी डिस्ट्रिब्यूशन की रिलीज़ घोषणा, दूसरा मिरर, या ऐसा पैकेज मैनेजर जिसे यह मान पहले से पता है।

### नहीं मिला। अब क्या?

पहले उसी जगह से दोबारा डाउनलोड कीजिए। बीच में टूटा या दोबारा जोड़ा गया ट्रांसफ़र सबसे आम वजह है, और दूसरी कॉपी से बात अक्सर वहीं खत्म हो जाती है। \
\
दूसरी कॉपी भी वही गलत जवाब दे तो देखिए कि आप सही लाइन से मिला रहे हैं या नहीं। रिलीज़ पेज पर कई फ़ाइलें होती हैं, और ARM बिल्ड का चेकसम x86 वाले से कभी नहीं मिलेगा। फिर वर्शन देखिए। यह सब सही होने पर भी न मिले तो फ़ाइल मत खोलिए। किसी और मिरर से लाइए और दोनों के चेकसम आपस में मिलाइए।

### मुझे कौन सा इस्तेमाल करना चाहिए?

वही जो बनाने वाले ने छापा है। पूरी कसरत का मतलब उनके नंबर से मिलाना है, और वह नंबर आप उनके लिए नहीं चुन सकते। \
\
अगर आप चेकसम जाँच नहीं रहे बल्कि बना रहे हैं, तो SHA-256 लीजिए। MD5 और SHA-1 उस मायने में टूट चुके हैं जो असल में मायने रखता है: एक ही मान वाली दो अलग फ़ाइलें जानबूझकर बनाई जा सकती हैं, MD5 में कुछ घंटों में और SHA-1 में भी सँभलने लायक खर्च में। इससे वे हादसों के खिलाफ़ बेकार नहीं हो जाते, क्योंकि बीच में कटा डाउनलोड इत्तेफ़ाक से असली वाले जैसा मान नहीं देगा; पर इसका मतलब यह है कि अब वे यह नहीं बता सकते कि किसी ने छेड़छाड़ नहीं की। SHA-384 और SHA-512 ठीक हैं और व्यवहार में बेहतर नहीं; वे यहाँ इसलिए हैं कि कुछ प्रोजेक्ट उन्हें छापते हैं।

### टूट चुका है तो MD5 यहाँ है ही क्यों?

क्योंकि छपा हुआ अब भी वही है। मिरर, फ़र्मवेयर के डाउनलोड, विश्वविद्यालयों के सॉफ़्टवेयर पेज और बहुत सारी कंपनियों की साइटों ने बीस साल पहले MD5 छापा था और उसके बाद वह पेज छुआ तक नहीं। जो टूल उसे निकालने से इनकार कर दे, वह उसी सवाल का जवाब देने से इनकार कर रहा है जिसे लेकर लोग सचमुच आते हैं। \
\
वह जो कर सकता है वह यह है कि जवाब की कीमत बता दे, और डिब्बी के बगल वाली पंक्ति यही करती है। मिल गया MD5 आज भी बिगड़े हुए डाउनलोड को खारिज करता है। जानबूझकर बदली गई फ़ाइल को खारिज नहीं करता।

### मिलान वाले डिब्बे में कौन-कौन से रूप चिपकाए जा सकते हैं?

सारे चलन वाले रूप, और कौन सा है यह पेज खुद पहचान लेता है। \
\
सिर्फ़ हेक्स, बीच में स्पेस हों या न हों। `md5sum` या `sha256sum` के आउटपुट की एक लाइन, पीछे फ़ाइल का नाम लगा हो तो भी। चालीस लाइनों वाली पूरी `SHA256SUMS` फ़ाइल, जिसमें से आपकी फ़ाइल का नाम लिखी लाइन ली जाती है। BSD वाला रूप, `SHA256 (disk.iso) = …`। आगे लेबल लगा हुआ, जैसे `SHA-256: …`। और subresource integrity वाला `sha384-…`, जो हेक्स नहीं बल्कि base64 में होता है और मिलान से पहले डिकोड कर लिया जाता है। \
\
कौन सा एल्गोरिदम है यह लंबाई से निकलता है: 32 हेक्स अक्षर MD5 हैं, 40 SHA-1, 64 SHA-256, 96 SHA-384 और 128 SHA-512। किन्हीं दो की लंबाई एक जैसी नहीं, इसलिए न कुछ चुनना है और न कुछ गलत होना है।

### क्या sha256sum या certutil जैसा ही नतीजा आएगा?

हाँ, बाइट दर बाइट वही। ये छपे हुए टेस्ट वेक्टर वाले सटीक स्पेसिफ़िकेशन हैं, और यहाँ का हर एल्गोरिदम हर बिल्ड पर उन वेक्टर से और ऑपरेटिंग सिस्टम के इंप्लीमेंटेशन से मिलाकर जाँचा जाता है। \
\
फ़र्क सिर्फ़ दिखने में मिलेगा। विंडोज़ का `certutil -hashfile` बड़े अक्षरों में और बीच में स्पेस डालकर छापता है; यह पेज छोटे अक्षरों में लिखता है, जो लगभग हर जगह चलन में है। मिलान दोनों को अनदेखा करता है, इसलिए certutil से कॉपी किया चेकसम यहाँ चिपकाए छोटे अक्षरों वाले से मिल जाता है।

### क्या मैं दो फ़ाइलों को आपस में मिला सकता हूँ?

हाँ, एक कदम और लगेगा: पहले वाली जाँचिए, उसका चेकसम कॉपी कीजिए, फिर दूसरी चुनिए और वही चेकसम डिब्बे में चिपका दीजिए। दोनों फ़ाइलें एक जैसी हुईं तो पेज बता देगा। \
\
यह जानना उस मौके के लिए काम का है जहाँ चेकसम चुपचाप सबसे अच्छे साबित होते हैं: यह तय करना कि बैकअप ड्राइव वाली कॉपी सचमुच लैपटॉप वाली फ़ाइल ही है या नहीं, जबकि दोनों का साइज़ और तारीख एक जैसी बता रहे हों।

### क्या यह मेरी फ़ाइल बदलता है?

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

### क्या यह मुफ़्त है, और क्या खाता चाहिए?

मुफ़्त है, और न खाता है, न साइन-इन, न कोई ट्रायल। फ़ाइल के साइज़ की कोई हद नहीं और कितनी फ़ाइलें जाँचें इसकी भी नहीं। साइट पर विज्ञापन हैं, वही इसका खर्च उठाते हैं; विज्ञापनों को आपकी फ़ाइल के बारे में कुछ नहीं दिया जाता।

### क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट बंद कर दीजिए, यह चलता रहेगा। कुछ भी अपलोड नहीं हो रहा, यह साबित करने का सबसे आसान तरीका भी यही है: जो टूल आपकी फ़ाइल को हिसाब लगाने के लिए बाहर भेजता हो, वह तार निकालते ही रुक जाता।

## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है

- **आपकी फ़ाइल के पास बाहर जाने का कोई रास्ता नहीं है।** Content-Security-Policy में वे सारे पते लिखे हैं जिनसे यह पेज बात कर सकता है, और उनमें से एक भी हमारा नहीं है। यहाँ कोई ऐसी जगह है ही नहीं जहाँ आपकी फ़ाइल जमा हो सके, और होती भी तो कोड में ऐसा कुछ नहीं जो उसे वहाँ भेजे। पहले यहाँ `connect-src 'none'` लिखा था, जो पूरी तरह बंद था। विज्ञापनों की कीमत यही थी, और यह कह देना भी सौदे का हिस्सा है।
- **फ़ाइल कभी पूरी कहीं नहीं रखी जाती, चाहे कितनी भी बड़ी हो।** वह चार-चार मेगाबाइट में पढ़ी जाती है, और हर टुकड़ा चल रही गिनती में जुड़कर हट जाता है। इसलिए यह पेज चालीस गीगाबाइट की डिस्क इमेज पर भी उतनी ही मेमोरी लेता है जितनी एक टेक्स्ट फ़ाइल पर, और ऐसा कोई साइज़ नहीं जहाँ यह हार मान ले। ब्राउज़र का अपना `crypto.subtle.digest` इसी वजह से इस्तेमाल नहीं होता: वह फ़ाइल को एक ही बार में पूरी मेमोरी में माँगता है, और यही वह हद है जो इस टूल में नहीं होनी चाहिए।
- **पाँच एल्गोरिदम, इस रिपॉज़िटरी की पाँच फ़ाइलें।** `src/md5.js`, `src/sha1.js`, `src/sha256.js` और `src/sha512.js` में छपे हुए स्पेसिफ़िकेशन ज्यों के त्यों लिखे हैं, हर एक करीब साठ लाइन। कॉन्स्टेंट की टेबल गिनकर निकालने के बजाय लिखी गई है, ताकि नतीजा किसी भी हाल में आपके ब्राउज़र पर निर्भर न हो। हर एक को हर बिल्ड पर आधिकारिक टेस्ट वेक्टर और खुद ऑपरेटिंग सिस्टम के इंप्लीमेंटेशन, दोनों से मिलाकर जाँचा जाता है।
- **आप जो चेकसम चिपकाते हैं वह भी कहीं नहीं जाता।** मिलान यहीं, इसी पेज में, यहीं निकाले गए मान से होता है। उस मिलान की खबर किसी को नहीं होती: न मान की, न यह कि मिला या नहीं, न फ़ाइल के नाम की। यह बात सुनने से ज़्यादा भारी है, क्योंकि चेकसम के साथ फ़ाइल का नाम मिल जाए तो जमा करने वाले को ठीक-ठीक पता चल जाता है कि आपने अभी किस सॉफ़्टवेयर का कौन सा बिल्ड उतारा है।
- **गूगल क्या लोड करता है, और उसे क्या नहीं मिलता।** विज्ञापन और माप वाली स्क्रिप्ट गूगल से आती हैं। इनमें से किसी को आपकी फ़ाइल के बारे में कुछ नहीं मिलता: न फ़ाइल, न नाम, न साइज़, न निकाला गया कोई मान। बाइट पढ़ने या प्रोसेस करने वाली हर लाइन इसी डोमेन से आती है और रिपॉज़िटरी में मौजूद है।
- **दान वाला बटन क्या लोड करता है, और उसे क्या नहीं मिलता।** ऊपर दिखने वाला “Buy me a coffee” बटन cdnjs.buymeacoffee.com की एक स्क्रिप्ट बनाती है और उसके अक्षर Google Fonts से आते हैं। वह बस एक लिंक है: न विज़िट की खबर देता है, न आपके या आपकी फ़ाइलों के बारे में कुछ पाता है। जब तक आप क्लिक न करें कुछ नहीं होता, और क्लिक करने पर जो खुलता है वह किसी और की साइट है।
- **यह ऑफ़लाइन भी चलता है।** नेटवर्क बंद कर दीजिए, इस पेज का हर हिस्सा वैसे ही काम करता रहेगा। सबसे आसान सबूत यही है: जो टूल आपकी फ़ाइल को हिसाब लगाने के लिए बाहर भेजता हो, वह तार निकालते ही रुक जाता।

**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website

सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, चारों कंप्रेशन फ़ंक्शन `src/md5.js`, `src/sha1.js`, `src/sha256.js` और `src/sha512.js` में हैं, उनकी साझा पैडिंग `src/blocks.js` में, और फ़ाइल को टुकड़ों में पढ़ने वाला लूप `src/hash.js` में। इनमें से किसी में एक भी लाइन ऐसी नहीं जो नेटवर्क तक पहुँच सके।
