एमडी 5 इनपुट / आउटपुट के लिए अधिकतम लंबाई


164

स्ट्रिंग की अधिकतम लंबाई क्या है जो md5 हैशेड हो सकती है? या: यदि इसकी कोई सीमा नहीं है, और यदि ऐसा है तो md5 आउटपुट मान की अधिकतम लंबाई क्या होगी?


2
विकी का पालन करें: en.wikipedia.org/wiki/MD5
फ्रैंक

जवाबों:


240

MD5 एक बिट-लंबाई संदेश को 128-बिट्स की निश्चित-लंबाई आउटपुट में संसाधित करता है, जिसे आमतौर पर 32 हेक्साडेसिमल अनुक्रमों के अनुक्रम के रूप में दर्शाया जाता है।


95
स्वयं पर ध्यान दें: MD5 हैश लंबाई = 128 bits= 16 bytes=32 hex digits
चेकसम

2
[एक सामान्य संपादन] ३२ हेक्स अंक और स्ट्रिंग में z az ’से केवल शब्द होते हैं और
Edit

1
मैंने पिछली टिप्पणियों में थोड़ी गलती देखी। टेक्स्ट को उद्धृत किया जाना चाहिए :) "32 हेक्स अंक और स्ट्रिंग में 'az' से केवल अक्षर होते हैं और '0-9' के अंक"
Remis B

2
@ शफिज़ादेह उत्तर के अनुसार, इनपुट में एक मनमाना लंबाई है। इसका मतलब यह है कि पैरामीटर आपकी ज़रूरत की कोई भी लंबाई हो सकती है।
kdjeteri

1
@Peping एक छोटा सा सुधार: इनपुट तब तक हो सकता है जब तक उपयोग की गई प्रोग्रामिंग भाषा में उपयोग किए गए डेटाटाइप हो सकते हैं। उदाहरण: जावा के तार आंतरिक रूप से एक सरणी का उपयोग करते हैं, इसलिए, एक स्ट्रिंग में केवल (2 ^ 31) -1 अक्षर (या कम, ढेर के आकार पर निर्भर करता है) हो सकते हैं। जावा में एमडी 5 फ़ंक्शन के लिए यह आपका अधिकतम इनपुट भी होगा। लेकिन शुद्ध रूप से, MD5 फ़ंक्शन वास्तव में मनमानी लंबाई के इनपुट को संसाधित कर सकता है। ;)
रिकोबैर्स

38

लंबाई बढ़ाएँ

बी के 64-बिट प्रतिनिधित्व (पैडिंग बिट्स जोड़ने से पहले संदेश की लंबाई) को पिछले चरण के परिणाम से जोड़ा गया है। अप्रत्याशित घटना में कि बी 2 ^ 64 से अधिक है, तो केवल कम-क्रम वाले 64 बिट्स बी का उपयोग किया जाता है।

  • हैश हमेशा 128 बिट्स का होता है। यदि आप इसे एक हेक्साडेसिमल स्ट्रिंग के रूप में एनकोड करते हैं तो आप प्रति वर्ण 4 बिट्स को एन्कोड कर सकते हैं, 32 अक्षर दे सकते हैं।
  • MD5 एन्क्रिप्शन नहीं है। आप मूल स्ट्रिंग प्राप्त करने के लिए MD5 हैश को सामान्य रूप से "डिक्रिप्ट" नहीं कर सकते।

अधिक देखें यहाँ


संदेश की लंबाई असीमित है , आपको संदेश का क्या मतलब है ? क्या यह इनपुट है? मेरा प्रश्न हैMD5("how many characters exactly?");
शफीज़ादेह २५'१६

@ शफिज़ादेह आपका इनपुट आपकी वर्तमान प्रोग्रामिंग भाषा में यथासंभव लंबे समय तक हो सकता है, जावा में यह एक स्ट्रिंग में (2 ^ 31) -1 अक्षर होगा। और हाँ, "संदेश" इनपुट है।
RicoBrassers

@ शफिज़ादेह ... या फ़ाइल से, इनपुट उपलब्ध संग्रहण जितना बड़ा हो सकता है।
टूलमेकरस्टेव

9

आपके पास कोई भी लंबाई हो सकती है, लेकिन अगर स्ट्रिंग इनपुट बहुत लंबा है, तो निश्चित रूप से कंप्यूटर पर एक मेमोरी इश्यू हो सकता है। आउटपुट हमेशा 32 वर्ण का होता है।


4
यदि स्ट्रिंग इनपुट बहुत लंबा है, तो यह पहली जगह में सिस्टम में मौजूद नहीं होगा, जब तक कि यह एक फाइल में न हो, जिस स्थिति में आप ब्लॉक में डाइजेस्ट फंक्शन को पास कर सकते हैं क्योंकि वे पढ़े जाते हैं, दूसरे शब्दों में, आपको केवल आवश्यकता है के लिए blockइनपुट के बाइट्स एक समय में उपलब्ध है।
L --o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e

6

एल्गोरिथ्म को मनमाना इनपुट लंबाई का समर्थन करने के लिए डिज़ाइन किया गया है। यानी आप एक डीवीडी की आईएसओ जैसी बड़ी फाइलों के हैश की गणना कर सकते हैं ...

यदि इनपुट के लिए एक सीमा है तो यह उस वातावरण से आ सकता है जहां हैश फ़ंक्शन का उपयोग किया जाता है। मान लें कि आप एक फ़ाइल की गणना करना चाहते हैं और पर्यावरण में MAX_FILE की सीमा है।

लेकिन आउटपुट स्ट्रिंग हमेशा एक ही होगी: 32 हेक्स चार्ट (128 बिट्स)!


4

128-बिट एमडी 5 हैश को 32 हेक्साडेसिमल अंकों के अनुक्रम के रूप में दर्शाया गया है।


4

आप MD5 के बजाय SHA-1 का उपयोग करना चाह सकते हैं , क्योंकि MD5 को टूटा हुआ माना जाता है।

आप इस विकिपीडिया लेख में एमडी 5 भेद्यता के बारे में अधिक पढ़ सकते हैं ।


5
यह अफवाह से अधिक नहीं है। एमडी 5 सामान्य वेब-विकास कार्यों के लिए पर्याप्त है
आपका कॉमन सेंस

11
इसके निर्माता, साथ ही ब्रूस श्नीयर और होमलैंड सिक्योरिटी इस बात से सहमत हैं कि यह टूट गया है ... आपको और कितने 'अफवाह फैलाने वाले' आपको यह समझाने की ज़रूरत है कि यह वास्तव में कुछ समय के लिए टूट गया है? तथ्य यह है कि एक इनपुट को खोजना आसान है जो एक विशिष्ट हैश उत्पन्न करता है। निश्चित रूप से आप पर्याप्त मात्रा में बड़े लवणों का उपयोग करके, अपने जोखिमों को नमन करके इस जोखिम को कम कर सकते हैं। साइड-नोट पर: SHA-1 को सिर्फ टूटा हुआ माना जाता है। यदि आप लोगों को अपग्रेड करने की सलाह देते हैं, तो कृपया उन्हें SHA-2 में अपग्रेड करने की सलाह दें।
कंधार

3
@ कैंडर ओह मुझे बहुत कम चाहिए। एक उदाहरण। एक हैश को देखते हुए, क्या आप एक स्रोत स्ट्रिंग लाएंगे? किसी महान लेख के लिए लिंक नहीं, किसी की राय नहीं, लेकिन सिर्फ एक स्रोत स्ट्रिंग?
आपका कॉमन सेंस

2
किसी ने भी वास्तव में उल्लेख नहीं किया कि वे "टूटे" शब्द के तहत वास्तव में क्या मतलब है। हालाँकि, @YourCommonSense समझ में आता है।
१२:

4
आप एमडी 5 के सुरक्षा उपयोगों के बारे में बात कर रहे हैं। लेकिन एमडी 5 (या किसी अन्य हैशिंग तकनीक) में अन्य उपयोगों का एक टन है। मैं, एक के लिए, इसके हैश द्वारा एक फ़ाइल का नाम बदलने के लिए उपयोग करना चाहता हूं। मैं निश्चित रूप से एमडी 5 के टक्कर प्रतिरोध के बारे में चिंतित नहीं हूं। आपने जो भी पोस्ट किया है वह अभी भी सच है, सिर्फ मेरे 2 सेंट।
tfrascaroli

3

Md5 के इनपुट की कोई सीमा नहीं है जो मुझे पता है। कुछ कार्यान्वयन के लिए पूरे इनपुट को md5 फ़ंक्शन (यानी, कार्यान्वयन मेमोरी के एक ब्लॉक पर कार्य करता है, एक धारा पर नहीं) में पास करने से पहले मेमोरी में लोड करने की आवश्यकता होती है, लेकिन यह स्वयं एल्गोरिथ्म की सीमा नहीं है। आउटपुट हमेशा 128 बिट्स होता है। ध्यान दें कि md5 एक एन्क्रिप्शन एल्गोरिथ्म नहीं है, लेकिन एक क्रिप्टोग्राफ़िक हैश है। इसका मतलब है कि आप इसका उपयोग डेटा के एक चंक की अखंडता को सत्यापित करने के लिए कर सकते हैं, लेकिन आप हैशिंग को उल्टा नहीं कर सकते। यह भी ध्यान दें कि md5 को टूटा हुआ माना जाता है, इसलिए आपको इसे किसी भी सुरक्षा-संबंधी के लिए उपयोग नहीं करना चाहिए (यह अभी भी डाउनलोड की गई फ़ाइलों की अखंडता को सत्यापित करने के लिए ठीक है और ऐसे)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.