AFAIK, ऐसे "जादू" मूल्यों में निम्नलिखित दो गुण हैं:
- वे किसी भी तरह अद्वितीय हैं, और यादृच्छिक लगते हैं।
- वे बीजीय संचालन में बार-बार भाग ले सकते हैं; कई बार कुछ विशिष्ट ऑपरेशन (गुणा या घातांक कहने के बाद) लागू करने के बाद भी, "जादू" मूल्य अभी भी नए मूल्यों को उत्पन्न करने में सक्षम है।
आपको MD5 में एक समान मामला मिल सकता है । निम्नलिखित पंक्ति पर विचार करें:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
यहाँ, sin(i + 1)
जादू मूल्यों को उत्पन्न करने के लिए है; जो अद्वितीय, यादृच्छिक दिखने वाले हैं, और बहुत सारे काम कर सकते हैं i
। (वास्तव में, i
0..63 में पर्वतमाला)।
संपादित करें: TEA पर मूल पेपर को पढ़कर , कोई समझता है कि "स्टीवन स्टैडनिक" द्वारा दिया गया उत्तर सही है। ध्यान दें कि जादू स्थिरांक नाम डेल्टा है:
प्रत्येक राउंड में एक अलग मल्टीपल डेल्टा का उपयोग किया जाता है ताकि कई बार कोई भी बिट बार-बार न बदले। हमें संदेह है कि एल्गोरिथ्म डेल्टा के मूल्य के प्रति बहुत संवेदनशील नहीं है और हमें केवल एक खराब मूल्य से बचने की आवश्यकता है। यह ध्यान दिया जाएगा कि ट्रंकेशन या निकटतम गोलाई के साथ डेल्टा विषम हो जाता है, इसलिए यह सुनिश्चित करने के लिए कोई अतिरिक्त सावधानी बरतने की आवश्यकता नहीं है कि राशि परिवर्तन के सभी अंक।
चूंकि केवल डेल्टा के 32 गुणकों का उपयोग किया जाता है (प्रत्येक दौर में एक), यह अजीब नहीं है कि एल्गोरिथ्म किसी भी डेल्टा के लिए बहुत संवेदनशील नहीं है। (अधिक जानकारी के लिए स्टीवन स्टैडनिक का जवाब देखें।)
संपादित 2: संयोग से, एमडी 4 अपने कार्यों में "जादू" स्थिरांक के रूप में 2 (0x5a827999) और 3 (0x6ed9eba1) के वर्गमूल का उपयोग करता है। पुस्तक ५.४.४ में नेटवर्क सुरक्षा: एक सार्वजनिक दुनिया में निजी संचार यह अच्छी तरह से समझाता है:
यह दिखाने के लिए कि डिज़ाइनरों ने जानबूझकर स्थिरांक का शैतानी मूल्य नहीं चुना है, यह स्थिरांक 2 के वर्गमूल पर आधारित है।
यह स्पष्टीकरण गिल्स की टिप्पणी के नीचे दिए गए बिंदु के समान है।