2012-03-14 16 views
10

मुझे एमडी 5 हैश एल्गोरिदम को समझने की आवश्यकता है। मैं एक दस्तावेज पढ़ रहा था और यह कहा गयाएमडी 5 हैश एल्गोरिदम में पैडिंग

गद्देदार "(विस्तारित)" संदेश है "तो यह है कि इसकी लंबाई (बिट्स में) 448 करने के लिए अनुकूल है, सापेक्ष 512 है, संदेश इसलिए यह है कि बढ़ा दिया गया है 512 बिट्स के एक से अधिक होने के लिए 64 बिट्स शर्मीली हैं। पैडिंग हमेशा किया जाता है, भले ही संदेश की लंबाई पहले से ही 448, मॉड्यूल 512 के अनुरूप हो। "

मुझे समझने की ज़रूरत है कि इसका मतलब सरल शब्दों, खासकर 448 मॉड्यूल 512 में क्या है। MODULO शब्द मुद्दा है। कृपया मैं इसके लिए सरल उदाहरणों की सराहना करूंगा। मजेदार हालांकि, यह एमडी 5 हैश के लिए पहला कदम है! :)

धन्यवाद

उत्तर

10

Modulo या आधुनिक, एक समारोह है कि आप शेष बताएगा कि दो नंबर एक दूसरे से विभाजित कर रहे हैं में जो परिणाम है।

5 सापेक्ष 3::

5/3 = 1, 2 और शेष

उदाहरण के लिए

। तो 5 मॉड 3 है 2.

10 मॉड्यूल 16 = 10, क्योंकि 16 नहीं बनाया जा सकता है।

15 मॉड्यूल 5 = 0, क्योंकि 15 5 में 5 बार जाता है। 15 5.

स्कूल में वापस आप इसे "रेमेन्डर" या "वाम ओवर" के रूप में सीख चुके होंगे, मॉड्यूलो यह कहने का एक शानदार तरीका है।

यह क्या कह रहा है, यह है कि जब आप एमडी 5 का उपयोग करते हैं, तो पहली चीजों में से एक यह है कि आप अपना संदेश पैड करते हैं, इसलिए यह काफी लंबा है। एमडी 5 के मामले में, आपका संदेश एन बिट्स होना चाहिए, जहां n = (512 * z) +448 और z कोई संख्या है।

उदाहरण के तौर पर, यदि आपके पास एक फ़ाइल थी जो 1472 बिट लंबी थी, तो आप इसे एमडी 5 हैश के रूप में उपयोग करने में सक्षम होंगे, क्योंकि 1472 मॉड्यूल 512 = 448. अगर फ़ाइल 1400 बिट लंबी थी, तो आप इससे पहले कि आप बाकी एमडी 5 एल्गोरिदम चला सकें, अतिरिक्त 72 बिट्स में पैड की आवश्यकता है।

0

मॉड्यूलस विभाजन विभाजन का है। उदाहरण में

512 mod 448 = 64 
448 mod 512 = 448 

512 आधुनिक 448 की एक और दृष्टिकोण उन्हें 512/448 = 1.142 विभाजित करने के लिए किया जाएगा ..

तो फिर तुम 448 से गुणा डॉट से पहले परिणाम नंबर से 512 घटाना:

512 - 448*1 == 64 That's your modulus result. 

आपको यह जानने की आवश्यकता है कि 448 64 बिट्स एकाधिक 512 से कम हैं।

लेकिन अगर यह 448 और 512 के बीच है ??

आम तौर पर हमें x8 (मॉड्यूलस के परिणाम) द्वारा 448 को घटाना होगा।

447 mod 512 = 447; 448 - 447 = 1; (all good, 1 zero to pad) 

449 mod 512 = 1; 448 - 449 = -1 ??? 

तो इस समस्या का समाधान 512 के उच्चतम लेना होगा लेकिन अभी भी 64 का छोटा होगा;

512*2 - 64 = 960 
449 mod 512 = 1; 960 - 449 = 511; 

यह इसलिए होता है क्योंकि बाद में हम 64 बिट्स मूल संदेश और पूरी लंबाई जोड़ने की जरूरत है 512.

960 - 449 = 511; 
511 + 449 + 64 = 1024; 
1024 is multiple of 512; 
के कई होना जरूरी
संबंधित मुद्दे