यह सब क्या है, यह सीखने के बाद, मैंने सादृश्य के माध्यम से एक उम्मीद के मुताबिक सरल विवरण लिखने की सोची:
सारांश: एक हैशकोड क्या है?
- यह एक फिंगरप्रिंट है। हम इस फिंगर प्रिंट का उपयोग ब्याज के लोगों की पहचान करने के लिए कर सकते हैं।
ज़्यादा डिटेल्स के लिए नीचे पढ़ें:
हमशक्ल के रूप में सोचें कि हम किसी को विशिष्ट पहचान देने की कोशिश कर रहे हैं
मैं एक जासूस हूं, एक अपराधी की तलाश में हूं। आइए हम उसे मिस्टर क्रूएल कहते हैं। (वह एक कुख्यात हत्यारा था जब मैं एक बच्चा था - वह एक घर में घुस गया और एक गरीब लड़की का अपहरण कर उसकी हत्या कर दी, उसके शरीर को डस लिया और वह अभी भी ढीले पर बाहर है - लेकिन यह एक अलग मामला है)। श्री क्रूज़ की कुछ विशिष्ट विशेषताएं हैं, जिनका उपयोग मैं लोगों के समुद्र के बीच उनकी विशिष्ट पहचान करने के लिए कर सकता हूं। ऑस्ट्रेलिया में हमारे 25 मिलियन लोग हैं। उनमें से एक है मिस्टर क्रूएल। हम उसे कैसे पा सकते हैं?
मिस्टर क्रुएल को पहचानने के बुरे तरीके
जाहिर तौर पर मिस्टर क्रुएल की नीली आंखें हैं। यह बहुत मदद नहीं है क्योंकि ऑस्ट्रेलिया में लगभग आधी आबादी की नीली आँखें भी हैं।
मिस्टर क्रुएल को पहचानने के अच्छे तरीके
मैं और क्या उपयोग कर सकता हूं? मुझे पता है: मैं एक फिंगरप्रिंट का उपयोग करूँगा!
लाभ :
- दो लोगों के लिए एक ही फिंगर प्रिंट लेना वास्तव में कठिन है (असंभव नहीं है, लेकिन बेहद संभावना नहीं है)।
- श्री क्रूर का फिंगरप्रिंट कभी नहीं बदलेगा।
- मिस्टर क्रुएल के हर एक हिस्से को पूरा किया जा रहा है: उनके रूप, बालों का रंग, व्यक्तित्व, खाने की आदतें आदि (आदर्श रूप से) उनके फिंगरप्रिंट में परिलक्षित होनी चाहिए, जैसे कि उनका कोई भाई है (जो बहुत समान है लेकिन समान नहीं है) - तो दोनों चाहिए है अलग फिंगर प्रिंट्स । मैं कहता हूं "चाहिए" क्योंकि हम 100% गारंटी नहीं दे सकते हैं कि इस दुनिया में दो लोगों के अलग-अलग फिंगरप्रिंट होंगे।
- लेकिन हम हमेशा इस बात की गारंटी दे सकते हैं कि श्री क्रूर के पास हमेशा एक ही फिंगर प्रिंट होगा - और यह कि उनका फिंगरप्रिंट कभी भी नहीं बदलेगा।
उपरोक्त विशेषताएं आम तौर पर अच्छे हैश कार्यों के लिए होती हैं।
तो 'Collisions' के साथ क्या सौदा है?
तो कल्पना कीजिए कि अगर मुझे कोई लीड मिलती है और मुझे मिस्टर क्रुएल के फिंगरप्रिंट्स से मेल खाते हुए कोई व्यक्ति मिलता है। क्या इसका मतलब है कि मैंने मिस्टर क्रुएल पाया है?
........ शायद! मुझे एक करीब से देखना चाहिए। अगर मैं SHA256 (एक हैशिंग फ़ंक्शन) का उपयोग कर रहा हूं और मैं केवल 5 लोगों के साथ एक छोटे से शहर में देख रहा हूं - तो एक बहुत अच्छा मौका है जो मैंने उसे पाया है! लेकिन अगर मैं एमडी 5 (एक और प्रसिद्ध हैशिंग फ़ंक्शन) का उपयोग कर रहा हूं और + 2 ^ 1000 लोगों के साथ एक शहर में उंगलियों के निशान की जांच कर रहा हूं, तो यह काफी अच्छी संभावना है कि दो पूरी तरह से अलग-अलग लोगों के पास एक ही फिंगरप्रिंट हो सकता है।
तो इस सबका वैसे भी क्या फायदा है?
हैशकोड का एकमात्र वास्तविक लाभ यह है कि अगर आप हैश टेबल में कुछ डालना चाहते हैं - और हैश टेबल के साथ आप वस्तुओं को जल्दी से ढूंढना चाहेंगे - और हैश कोड आता है। वे आपको वास्तव में हैश टेबल में चीजों को खोजने की अनुमति देते हैं। जल्दी से। यह एक हैक है जो बड़े पैमाने पर प्रदर्शन में सुधार करता है, लेकिन सटीकता के एक छोटे से खर्च पर।
तो चलिए कल्पना करते हैं कि हम लोगों के पास एक हैश टेबल है - ऑस्ट्रेलिया में 25 मिलियन संदिग्ध। मिस्टर क्रूएल कहीं न कहीं ..... हम उसे वास्तव में जल्दी कैसे पा सकते हैं ? हमें उन सभी के माध्यम से छांटने की आवश्यकता है: एक संभावित मैच खोजने के लिए, या अन्यथा संभावित संदिग्धों को बरी करने के लिए। आप प्रत्येक व्यक्ति की विशिष्ट विशेषताओं पर विचार नहीं करना चाहते हैं क्योंकि इसमें बहुत अधिक समय लगेगा। इसके बजाय आप क्या उपयोग करेंगे? आप एक हैशकोड का उपयोग करेंगे! एक हैशकोड आपको बता सकता है कि क्या दो लोग अलग हैं। चाहे जो ब्लॉग्स मिस्टर क्रुएल न हों। यदि प्रिंट मेल नहीं खाते हैं, तो आप जानते हैं कि यह निश्चित रूप से श्री क्रूर नहीं है। लेकिन, अगर फिंगर प्रिंट मैच करते हैंतब आपके द्वारा उपयोग किए गए हैश फ़ंक्शन के आधार पर, संभावनाएं पहले से ही काफी अच्छी हैं जो आपने अपने आदमी को पाया। लेकिन यह 100% नहीं है। एकमात्र तरीका जिसे आप निश्चित कर सकते हैं, आगे की जांच करना है: (i) उसने / उसके पास एक अवसर / मकसद है, (ii) परीक्षा परिणाम आदि।
जब आप कंप्यूटर का उपयोग कर रहे हैं यदि दो वस्तुओं का समान हैश कोड मान है, तो आपको फिर से जांच करने की आवश्यकता है कि क्या वे वास्तव में समान हैं। उदाहरण के लिए, आपको यह जांचना होगा कि क्या ऑब्जेक्ट्स में समान ऊंचाई, समान वजन आदि हैं, यदि पूर्णांक समान हैं, या यदि ग्राहक_ एक मैच है, और फिर निष्कर्ष पर आते हैं कि क्या वे समान हैं। यह आमतौर पर एक IComparer या IEquality इंटरफेस को लागू करने के द्वारा किया जाता है।
मुख्य सारांश
तो मूल रूप से एक हैशकोड एक फिंगर प्रिंट है।
- दो अलग-अलग लोग / वस्तुएं सैद्धांतिक रूप से अभी भी एक ही फिंगरप्रिंट हो सकते हैं। या दूसरे शब्दों में। यदि आपके पास दो उंगली के निशान हैं जो समान हैं ......... तो उन्हें दोनों एक ही व्यक्ति / वस्तु से नहीं आने चाहिए।
- Buuuuuut, एक ही व्यक्ति / वस्तु हमेशा एक ही फिंगरप्रिंट लौटाएगा
।
- जिसका मतलब है कि अगर दो ऑब्जेक्ट अलग-अलग हैश कोड लौटाते हैं, तो आप 100% निश्चितता के लिए जानते हैं कि वे ऑब्जेक्ट अलग-अलग हैं।
उपरोक्त के चारों ओर अपना सिर पाने के लिए एक अच्छा 3 मिनट का समय लगता है। शायद इसे कुछ समय तक पढ़ें जब तक यह समझ में न आए। मुझे आशा है कि इससे किसी को मदद मिलेगी क्योंकि यह सब सीखने के लिए मुझे बहुत दुःख हुआ!