ईव के बिना बॉब के साथ संख्या को कैसे सत्यापित किया जाए?


49

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

नोट: यह प्रश्न "Google साक्षात्कार प्रश्नों" की एक सूची पर है। नतीजतन, वेब पर इस सवाल के कई संस्करण हैं, और उनमें से कई में स्पष्ट या सही उत्तर नहीं हैं।

नोट 2: इस सवाल का घिनौना जवाब है कि बॉब को "मुझे कॉल करें" लिखना चाहिए। हां, यह बहुत चालाक है, 'बॉक्स के बाहर' और सब कुछ, लेकिन सीएस के उस क्षेत्र में किसी भी तकनीक का उपयोग नहीं किया जाता है जहां हम अपने नायक को "बॉब" और उसके बाज को "ईव" कहते हैं।

अद्यतन:
एक एल्गोरिथ्म के लिए बोनस अंक जो आप और बॉब दोनों हाथ से काफी पूरा कर सकते हैं।

अद्यतन 2:
ध्यान दें कि बॉब को आपको कोई भी मनमाना संदेश भेजने की आवश्यकता नहीं है, लेकिन केवल इस बात की पुष्टि करें कि उसके पास आपका सही फोन नंबर है जो कि ईव के बिना उसे डिकोड किए बिना किया जा सकता है, जिससे सरल समाधान नहीं हो सकते हैं।


1
लेकिन "कॉल मी" का कोई मतलब नहीं है, उसके पास आपका सही फोन नंबर अभी तक नहीं है या कम से कम आपको यकीन नहीं है कि अगर वह ऐसा करता है, तो मुझे नहीं लगता कि यह बहुत चालाक है।
गिगिली

1
@ गिगली अगर आपको उससे कॉल आता है, तो उसके पास आपका नंबर है, अगर आपको कॉल नहीं आती है, तो वह नहीं करता है।
जो

1
अरे हाँ। मुझे अभी भी लगता है कि यह चतुर नहीं है!
गिगिली

एक और जीभ में गाल का जवाब सीज़र सिफर हो सकता है । यहां तक ​​कि अगर ईव हर संभव ऑफसेट की कोशिश करता है, तो उसके पास किसी दूसरे पर अंकों के किसी भी अनुक्रम को चुनने का कोई कारण नहीं है (उन सभी को कॉल करने की कोशिश करने की कमी)।
राफेल

2
@ राफेल अंकों के मुकाबले केवल 10 संभावित सीज़र सिफर नहीं हैं?
जो

जवाबों:


27

पहले हमें यह मान लेना चाहिए कि ईव केवल निष्क्रिय है। इसके द्वारा, मेरा मतलब है कि वह सच्चाई से बॉब को कार्ड भेजती है, और वह जो भी ऐलिस वापस लाती है वह वास्तव में बॉब की प्रतिक्रिया है। यदि ईव डेटा को या तो दोनों दिशाओं में बदल सकता है (और उसकी कार्रवाई पूर्ववत रहती है) तो कुछ भी हो जाता है।

(लंबे समय से चली आ रही परंपराओं का सम्मान करने के लिए, बातचीत में शामिल दो ईमानदार पक्षों को एलिस और बॉब कहा जाता है। आपके पाठ में, आपने "आपको" कहा। मेरा असली नाम "ऐलिस" नहीं है, लेकिन मैं वैसा ही जवाब दूंगा जैसे आपने लिखा था। कि ऐलिस बॉब का फ़ोन नंबर सत्यापित करना चाहता है।)

हैश फ़ंक्शन का उपयोग करने के लिए सरल (लेकिन कमजोर) उत्तर है। ऐलिस कार्ड पर लिखता है: "अपने फोन नंबर के SHA-256 हैश मेरे पास लौटें"। SHA-256 एक क्रिप्टोग्राफिक हैश फ़ंक्शन है जिसे माना जाता है कि यह सुरक्षित है, जहाँ तक हैश फ़ंक्शन चलते हैं। हाथ से इसकी गणना करना थकाऊ होगा, लेकिन फिर भी यह उल्लेखनीय है (यह लगभग 2500 32-बिट संचालन है, जहां प्रत्येक ऑपरेशन एक जोड़ है, एक शब्द शिफ्ट या घूमता है, या बिट्स का एक बिटवाइज़ संयोजन; बॉब एक ​​दिन में करने में सक्षम होना चाहिए या; इसलिए)।

अब इसमें कमजोर क्या है? SHA-256, क्रिप्टोग्राफिक हैश फ़ंक्शन होने के नाते, "प्रीइमेज" के लिए प्रतिरोधी है: इसका मतलब है कि हैश आउटपुट दिया गया है, इसी इनपुट को पुनर्प्राप्त करना बहुत मुश्किल है (यह समस्या है कि ईव चेहरे)। हालांकि, "बहुत कठिन" का अर्थ है "सबसे आसान तरीका जानवर बल है: एक मैच मिलने तक संभावित इनपुट की कोशिश करना"। परेशानी यह है कि ब्रूट बल यहां आसान है: इतने सारे संभावित फोन नंबर नहीं हैं (उत्तरी अमेरिका में, यह 10 अंक है, यानी मात्र 10 बिलियन)। बॉब चीजों को हाथ से करना चाहता है, लेकिन हम यह नहीं मान सकते कि ईव इतना सीमित है। एक बुनियादी पीसी कुछ लाखों SHA-256 हैश प्रति सेकंड की कोशिश कर सकता है इसलिए ईव एक घंटे से भी कम समय में किया जाएगा (यदि वह GPU का उपयोग करता है तो 5 मिनट से कम)।

यह एक सामान्य मुद्दा है: यदि बॉब नियतात्मक है (यानी एलिस से दिए गए संदेश के लिए, वह हमेशा उसी प्रतिक्रिया को लौटाएगा), तो ईव उसे अनुकरण कर सकता है। अर्थात्, ईव फोन नंबर को छोड़कर बॉब के बारे में सब कुछ जानता है, इसलिए वह लगभग 10 अरब बोब चलाता है, जो केवल उनके मान्य फोन नंबर से भिन्न होता है; और वह वास्तविक बोब के वास्तव में वापस आने के लिए आभासी बोब्स में से एक का इंतजार करती है। यह दोष कई प्रकार के "स्मार्ट" समाधानों को प्रभावित करता है जिसमें यादृच्छिक नॉन और सममित एन्क्रिप्शन और व्हाट्सनॉट शामिल हैं। यह एक मजबूत दोष है, और इसकी जड़ ईव और बॉब के बीच कंप्यूटिंग शक्ति में भारी अंतर में है (अब, अगर बॉब के पास भी ईव के रूप में बड़ा कंप्यूटर था, तो वह धीमी गति से उपयोग कर सकता हैकई पुनरावृत्तियों के उपयोग के माध्यम से हैश फ़ंक्शन; पासवर्ड के एवज में फोन नंबर के साथ कम या ज्यादा पासवर्ड हैशिंग के बारे में है; देखें bcrypt और यह भी उत्तर )।

इसलिए, एक गैर-कमजोर समाधान में बॉब के हिस्से में कुछ यादृच्छिकता शामिल होनी चाहिए : बॉब को एक सिक्का फ्लिप करना चाहिए या बार-बार पासा फेंकना चाहिए, और उसकी गणनाओं में मूल्यों को इंजेक्ट करना चाहिए। इसके अलावा, ईव को बॉब ने क्या किया, यह जानने में सक्षम नहीं होना चाहिए, लेकिन ऐलिस के लिए सक्षम होना चाहिए, इसलिए कुछ जानकारी बॉब से ऐलिस को बताई गई गोपनीय है । इसे असममित एन्क्रिप्शन या कम से कम, असममित कुंजी समझौता कहा जाता है । गणना करने के लिए उस वर्ग का सबसे सरल एल्गोरिथ्म, लेकिन फिर भी यथोचित रूप से सुरक्षित है, फिर PKCS # 1 v1.5 पैडिंग के साथ RSA है । RSA उपयोग सार्वजनिक घातांक के रूप में कर सकता है । इसलिए प्रोटोकॉल इस प्रकार है:e=3

  • ऐलिस एक बड़ा पूर्णांक उत्पन्न करता है जहां और समान आकार के प्रधान पूर्णांक हैं, जैसे कि का आकार सुरक्षा सुनिश्चित करने के लिए पर्याप्त है (अर्थात कम से कम 1024 बिट्स, 2012 के अनुसार)। इसके अलावा, ऐलिस को और को 3 के गुणक नहीं होने की व्यवस्था करनी चाहिए ।p q n n p - 1 q - 1n=pqpqnp1q1

  • ऐलिस कार्ड पर लिखता है ।n

  • बॉब पहले अपना फोन नंबर बाइट अनुक्रम में रूप में लंबे समय तक पैड करता है , जैसा कि PKCS # 1 द्वारा वर्णित है (इसका मतलब है: 00 02 xx xx ... xx 00 bb bb .. bb, जहां 'bb' दस बाइट्स हैं जो सांकेतिक शब्दों में बदलना फोन नंबर, और 'xx' यादृच्छिक गैर-शून्य बाइट मान हैं, जिसकी कुल लंबाई 128 बाइट्स के लिए है यदि 1024-बिट पूर्णांक है)।nnn

  • बॉब अपने बाइट अनुक्रम को एक बड़े पूर्णांक मान (बिग-एंडियन एन्कोडिंग) के रूप में व्याख्या करता है और गणना करता है (ताकि यह बहुत बड़े पूर्णांकों के साथ कई गुणा हो, फिर एक विभाजन, परिणाम हो रहा है शेष भाग)। यह अभी भी हाथ से करने योग्य है (लेकिन, फिर से, यह शायद एक दिन का बेहतर हिस्सा लेगा)। परिणाम यह है कि बॉब ऐलिस को वापस भेजता है।m 3 m o d nmm3 mod n

  • ऐलिस के उसके ज्ञान का उपयोग करता है और ठीक करने के लिए से बॉब द्वारा भेजे गए। आरएसए पर विकिपीडिया पृष्ठ में उस प्रक्रिया पर स्पष्ट रूप से स्पष्ट व्याख्याएं हैं। एक बार जब ऐलिस है , वह गद्दी से हटा सकते हैं ( 'xx' गैर शून्य हैं, इसलिए पहले 'bb' बाइट स्पष्ट रूप से स्थित हो सकता है) और वह तो वह फ़ोन नंबर है, जो वह एक वह था के साथ तुलना कर सकते हैं है।q m m 3 m o d n n mpqmm3 mod nm

ऐलिस की गणना के लिए एक कंप्यूटर की आवश्यकता होगी (एक कंप्यूटर जो हमेशा हाथ से प्राथमिक और करने योग्य होता है , लेकिन एक कंप्यूटर उस पर तेजी से विकसित होता है, इसलिए "doable" को अभ्यास करने में बहुत अधिक समय लग सकता है; हाथ से RSA डिक्रिप्शन कई ले जाएगा ; सप्ताह)।

(वास्तव में हम मैकलेयर एन्क्रिप्शन का उपयोग करके तेजी से हाथ से गणना कर सकते थे , लेकिन फिर सार्वजनिक कुंजी - ऐलिस कार्ड पर क्या लिखता है - बहुत बड़ा होगा, और एक कार्ड बस नहीं करेगा; ईव को एक पूरी पुस्तक का परिवहन करना होगा; अंकों का।)


1
बस एक त्वरित टिप्पणी, पहले प्रोटोकॉल में एक और कमजोरी (ऐलिस कहती है "मुझे फोन नंबर का एक हैश भेजें") यह है कि यह फिर से खेलना हमले के लिए असुरक्षित है। यदि आप इसे वास्तविक दुनिया में लागू कर रहे थे, तो ऐलिस को एक यादृच्छिक स्ट्रिंग (जिसे "नॉनस" कहा जाता है) भेजना चाहिए जो फोन नंबर के साथ हैशेड है।
छद्म नाम

1
आपने कहा कि "कुछ भी हो जाता है" यदि ईव संदेश को संशोधित कर सकता है, लेकिन यह आवश्यक रूप से एक खो कारण नहीं है। RSA का उपयोग करके हम वास्तव में MITM हमलों के खिलाफ संदेश की रक्षा कर सकते हैं, साथ ही साथ। एक प्रश्न भेजें: "क्या आपके पास मेरा फोन नंबर है?", साथ ही आपकी सार्वजनिक कुंजी, साथ ही आपकी निजी कुंजी के साथ हस्ताक्षरित (संदेश + आपका फोन नंबर)। यदि ईव ने संदेश को संशोधित करने का प्रयास किया (सार्वजनिक कुंजी को अपने आप में बदल दें) तो वह वैध हस्ताक्षर उत्पन्न करने में असमर्थ होगी क्योंकि वह आपके फोन नंबर को नहीं जानती है।
स्टीवेंडेसु

15

RSA की तरह सार्वजनिक कुंजी क्रिप्टोकरेंसी के एक क्लासिक अनुप्रयोग की तरह दिखता है ।

आप अपनी सार्वजनिक कुंजी साथ भेजते हैं, BoB उसकी संपर्क सूची से आपके फ़ोन नंबर को एन्क्रिप्ट करता है और आपको वापस भेजता है।


5
बॉब और ईव को देखते हुए, यह शायद महत्वपूर्ण विचार है। क्या यह इस संदर्भ में व्यावहारिक है (पेंसिल और पेपर)? इसके अलावा, मैं एक विकिपीडिया लेख के लिंक की तुलना में थोड़ी अधिक उम्मीद कर रहा था कि "इस लेख को संपादन की आवश्यकता है" ध्वज।
जो

@ जो: मैंने एक और लिंक शामिल करने के लिए संपादन किया है। मुझे पूरा यकीन है कि आपने आरएसए के बारे में सुना होगा। आरएसए शायद पर्याप्त व्यावहारिक है, क्योंकि लेखन का कहना है कि 1000 अंकों में ज्यादा समय नहीं लेना चाहिए।
आर्यभट्ट

14

सबसे बुनियादी चीजों में से एक आप एक डिफी-हेलमैन कुंजी विनिमय है । संचार शुरू होने से पहले इसे स्थापित करने के लिए आपको चाबी की आवश्यकता नहीं होती है क्योंकि यह एक तरह से बातचीत करता है जिससे श्रोता स्वयं कुंजी को प्राप्त नहीं कर सकते हैं। विवरण के लिए व्यापक विकिपीडिया लेख देखें।

आप भेजने बॉब DH पैरामीटर और ( एक उपयुक्त बड़ी प्रधानमंत्री होने के नाते, और आम तौर पर एक छोटी संख्या) और अपने सार्वजनिक कुंजी , जहां एक बड़ी गुप्त संख्या है (यह आपकी निजी कुंजी है), साथ ही बॉब को निम्न को वापस भेजने के लिए निर्देश:जी पी जी जी एक मीटर डी पी एकpgpggamodpa

  • उनकी सार्वजनिक कुंजी , जहां उनके चयन की एक बड़ी गुप्त संख्या है;बीgbmodpb
  • वह मानता है कि आपका फोन नंबर है, साझा गुप्त से प्राप्त एक कुंजी के साथ एक सममित एन्क्रिप्शन एल्गोरिथ्म का उपयोग करके एन्क्रिप्ट किया गया ।gabmodp

ईव देख सकते हैं और , लेकिन प्रभावी ढंग से गणना नहीं कर सकते ।ggamodp g agbmodpgabmodp

जब तक ठीक से लागू किया जाता है और दोनों संचारकों और हमलावर के पास अपने निपटान में एक ही गणना शक्ति होती है, यह सुरक्षित है।


2

बॉब को कोई संदेश नहीं भेजना है जिसे आप डिक्रिप्ट कर सकते हैं। उसे केवल आपको यह साबित करना है कि उसके पास आपका फोन नंबर है। इसलिए, क्रिप्टोग्राफ़िक हैश फ़ंक्शंस , (एक तरफ़ा एन्क्रिप्शन) एक सार्वजनिक कुंजी क्रिप्टोकरेंसी का एक विकल्प प्रदान करता है। SHA-2 वर्तमान में इस तरह के एक समारोह का एक लोकप्रिय उदाहरण है।

इस रणनीति में, आपको कभी भी बॉब के संदेश को वापस आपको डिक्रिप्ट नहीं करना है। आप बॉब को बताएं कि आप किस हैश फ़ंक्शन का उपयोग करना चाहते हैं, जैसे "बॉब, कृपया मेरे फ़ोन नंबर को एन्क्रिप्ट करने के लिए SHA-2 का उपयोग करें और ईव को परिणाम मेरे पास वापस भेजें"। फिर आप अपने फोन नंबर को हैश करने के लिए उसी एल्गोरिथ्म का उपयोग करते हैं, और जांच लें कि क्या आपको वही हैश मिला है जो बॉब को मिला है। यह बहुत कम संभावना है कि दो अलग-अलग फोन नंबर एक ही हैश के परिणामस्वरूप होंगे, और इसलिए आप यह निर्धारित कर सकते हैं कि बॉब के पास आपका सही फोन नंबर है या नहीं।

यदि आपके पास बॉब, और ईव के पास हैश फ़ंक्शन की गणना करने के लिए कंप्यूटर उपलब्ध नहीं हैं (या एक ब्रूट फ़ोर्स अटैक करते हैं) तो हैश फ़ंक्शन का उपयोग करना संभव हो सकता है जो ब्रूट फ़ोर्स के हमलों के खिलाफ कुछ सुरक्षा का त्याग करता है लेकिन आपके और बॉब के लिए बहुत आसान है हिसाब करना।


मैं वही जवाब लिख रहा था! अशुभ। मैं वैसे भी इसे पोस्ट करूँगा क्योंकि मैंने इस पर समय बिताया है।
१०:३३ पर गिगली

@ गिगली मैं उम्मीद कर रहा था कि कोई इस उत्तर को लिखेगा, लेकिन मैंने फैसला किया कि जब मैंने देखा कि कोई भी इस विकल्प की पेशकश नहीं कर रहा है ... मैं अभी भी एक पेंसिल-एंड-पेपर-फ्रेंडली संस्करण की तलाश कर रहा हूं। ईमानदारी से, मैं अपने दोस्त को हाथ से RSA या SHA-2 करने के लिए नहीं कहना चाहूंगा।
जो

समस्या यह है कि प्रत्येक सरल एल्गोरिथ्म जो हाथ से किया जा सकता है, ईव द्वारा एन्क्रिप्ट किया जाएगा।
गिगिली

@ गिगली का मतलब है "ईव द्वारा डिक्रिप्टेड"? समस्या बहुत विवश है। ऐसा लगता है कि 7-अंकीय पूर्णांकों से एक सरल एक-तरफा हैश होना चाहिए कि ईव मूल संख्या वापस पाने के लिए बस पूर्ववत नहीं कर सकता है।
जो

उफ़, मेरा मतलब स्पष्ट रूप से डिक्रिप्ट था।
गिगिली

0

एक सरल समाधान होगा:

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

रंगों को एक साथ मिलाने के बजाय, आप उपयोग कर सकते हैंgx(modp)जीएक्स(आधुनिकपी)एक्स(आधुनिकपी)बीy(आधुनिकपी)


मुझे लगता है कि आप कार्ड पर ऐसा कुछ लिख सकते हैं:

संख्या 3,5 और 7 के कई है (उदाहरण के लिए)।

(10)nn


यह डिफी-हेलमैन कुंजी विनिमय के विकिपीडिया लेख पर मिली छवि का वर्णन है । आपको कम से कम अपने स्रोत का उल्लेख करना चाहिए।
राफेल

@ राफेल: मैं इसे खुद नहीं जानता था, किसी ने मुझे समझाया और मुझे लगा कि यह एक अच्छा विचार है।
गिगिली

0

बस बॉब को संख्या को 2 या 3 या किसी अन्य चीज़ से गुणा करने के लिए कहें और उस संख्या को स्वयं संख्या के साथ दर्ज करें। यदि संख्या ज्ञात हो तो यह हाथ और प्रतिवर्ती के द्वारा उल्लेखनीय है। कोई शा, rsa या md5 बस सादा गणित।


3
यह उत्तर गलत है। सरल, हाथ से करने योग्य, और पूरी तरह से असुरक्षित। यह सिर्फ सादा काम नहीं करता है। ईव फोन नंबर के बारे में बहुत सारी जानकारी इससे पुनर्प्राप्त कर सकता है।
डीडब्ल्यू

0

अपने फोन नंबर के साथ एन्क्रिप्टेड बॉब को एक कोडवर्ड भेजें; यदि वह आपको कोड शब्द भेजता है तो आपको पता चलता है कि उसके पास सही संख्या है।

कमजोरी यह है कि ईव बॉब को अनुकरण कर सकता है, इसलिए बस हर फोन नंबर का प्रयास करें जब तक कि वह एक ऐसा न हो जाए जो बॉब को लौटते समय कुछ कोडवर्ड देता है।

तो बॉब को कोडवर्ड में एक बहुत बड़े यादृच्छिक संख्या को जोड़ने के लिए प्राप्त करें फिर इसे आपके पास वापस भेजने से पहले इसे एन्क्रिप्ट करें। यह आपकी इच्छानुसार इव्स सर्च स्पेस को बड़ा बनाता है।


यह सही नहीं लगता। यदि बॉब की गलत संख्या है, तो वह पहले डिक्रिप्ट करेगा और एक गलत कोड शब्द प्राप्त करेगा। इसके बाद वह कोडवर्ड में रैंडम नंबर डालते हैं, और गलत कुंजी के साथ एनक्रिप्ट करते हैं। जब संदेश प्राप्त होता है और सही कुंजी के साथ डिक्रिप्ट किया जाता है, तो पुनर्प्राप्त संदेश का पहला खंड संभवतः सही कोडवर्ड हो सकता है, भले ही बॉब की संख्या गलत हो।
सूचित33

@randomA आपको बस कोड शब्द (शब्द) बनाने की ज़रूरत है जो कि होने की संभावना इतनी कम है कि आप इसके बारे में परवाह नहीं करते हैं।
इयान रिंगरोज

आपने जो कहा वह सच है, लेकिन चुना हुआ समाधान भी इस मुद्दे पर बहुत अच्छा है। मैं केवल "इसलिए कुछ जानकारी बॉब से ऐलिस को बताई गई गोपनीय है" की ओर से चुने गए समाधान से असहमत होगा। यदि कोई ऐसा पेडिंग मैसेज इस्तेमाल करता है जो काफी बड़ा है और जिसमें फोन नंबर को दर्शाने के लिए इस्तेमाल किया गया कोई सिंबल नहीं है, तो बॉब बेतरतीब ढंग से फोन नंबर को इसमें डाल सकता है और ऐलिस ने बॉब के यादृच्छिक चरणों को जाने बिना डिक्रिप्ट किए हुए मैसेज से आसानी से फोन नंबर रिकवर कर सकता है ( इस मामले में किसी भी गोपनीय जानकारी की आवश्यकता नहीं है)।
सूचित १

-1

मैं कार्ड में कुछ 10 फोन नंबर लिखूंगा और उनमें से मैं यह सुनिश्चित करूंगा कि मेरा नंबर बॉब के नंबर के बगल में आए और मैं "अरे बॉब, मेरा नंबर आपके नंबर के बगल में होगा, कृपया सत्यापित करें" :)


1
मुझे लगता है कि मैं जानता हूँ कि बॉब की संख्या और पूर्व संध्या नहीं है: P
everlasto

-1

मुझे लगता है कि यह सवाल बहुत आसान है कि हर कोई सोचता है। हमें यह सत्यापित करने की आवश्यकता है कि बॉब की संख्या सही है (या जैसा कि यह गलत हो सकता है)। चूंकि हम "चेक" कर रहे हैं यदि संख्या सही है तो यह माना जा सकता है कि बॉब के पास पहले से ही आपका नंबर है। इसलिए बॉब को किसी कोड में अपना नंबर भेजने की कोई आवश्यकता नहीं है। मेरा जवाब होगा, "प्रिय बॉब, कृपया मेरा नंबर फोन करें। धन्यवाद, ऐलिस"


1
प्रश्न पहले से ही स्पष्ट रूप से इस तुच्छ उत्तर को शामिल नहीं करता है।
डेविड रिचरबी

-2

इस तरह एक trik खेलने की कोशिश करो

solution1: यदि संख्या 37 हैश मानचित्र इस तरह दिखाई देगा

०१ ० 07

१५ १२

२५ २०

३१ ३६

४ ९ ४३

५३ ५०

60 62

72 72

82५ 82२

91 94

और 10 अंकों या इससे भी अधिक भ्रमित करने के लिए ऐसा ही करें: पी

solution2: या एक बहुपद का निर्माण करें जिसमें आपका नंबर कुछ अन्य अद्वितीय संख्या बन जाता है

solution3: इसे "डूड कॉल मी" पत्र में लिखें

solution4: एक फंक्शन को इस तरह से लिखें कि यह हर अंक पर कार्य करता है और 0 देता है फिर वह सही या गलत solution5 भेजता है: यदि दोनों सिरे एक साझा हैश फ़ंक्शन को साझा करते हैं ... यह जीवन को बहुत आसान बनाता है


यह बिल्कुल स्पष्ट नहीं है कि आपकी योजना 37 का कोड कैसे है।
डेविड रिचरबी

हमें बस इतना करना होगा कि मानचित्र ... 31 का अर्थ है कि बोल्ड का मतलब 3 स्थिति में 1 है .... 72 का अर्थ 7 स्थिति 2 में है ... क्षमा करें यदि यह समझने के लिए बहुत सहज नहीं था
अजय रेड्डी

इसका उत्तर में विस्तार से बताया जाना चाहिए । लेकिन, गंभीरता से, अगर यह आपकी कोडिंग योजना है, तो यह बिल्कुल सुरक्षित नहीं है, क्या यह है?
डेविड रिचरबी

-2

मुझे लगता है कि हम बुनियादी बिट वार ऑपरेशन का उपयोग करके ऐसा कर सकते हैं या इसे कागज और पेंसिल के काम के लिए अनुकूलित कर सकते हैं। यदि एलिस की संख्या पूर्व के लिए है: 663 की तुलना में वह सिर्फ इस पद्धति का उपयोग करके संख्या को बदल सकती है। प्रत्येक अंक को समतुल्य बाइनरी प्रतिनिधित्व में परिवर्तित करें इसे ए 663-> 110 110 011 के रूप में कहें, प्रत्येक व्यक्ति संख्या के लिए संबंधित बिट्स को उलटने की तुलना में इसे B-> 011 011 110 के रूप में कहें, अब A और B-> 010 010 010 इस नंबर को भेजें। बॉब और अगर परिणाम समान आता है तो उसे हां या नहीं कहने के लिए कहें। इस मामले में पूर्व संध्या संख्या को डिकोड करने में सक्षम नहीं होगी और इस प्रतिनिधित्व को समाप्त करने के लिए अलग-अलग संख्याएं होने की बहुत कम संभावना है। केवल तरीका पूर्व अनुमान लगा सकता है सभी संभावित संयोजनों को लिखकर और फिर उन सभी को पूरा करने के लिए, लेकिन यह पूरा करने के लिए कि हम बाएं या दाएं शिफ्ट का उपयोग करके और डमी बिट्स जोड़कर इसे और अधिक जटिल बना सकते हैं।


यह काम नहीं करता है। सबसे पहले, प्रत्येक 3-बिट समूह के मध्य बिट को अछूता छोड़ दिया जाता है। दूसरे, प्रेषित संदेश के प्रत्येक समूह का पहला और तीसरा बिट हमेशा एक ही होगा, और आमतौर पर शून्य, जो बहुत सारे गलत सकारात्मक को जन्म देने वाला है। तीसरा, और मोटे तौर पर, तीन बिट्स केवल आठ मूल्यों का प्रतिनिधित्व कर सकते हैं, लेकिन एक दशमलव अंक दस में से किसी एक मान को ले सकता है। चौथा, आपका अंतिम वाक्य अनिवार्य रूप से है, "ओह, और यदि वह काम नहीं करता है, तो कुछ और जटिल प्रयास करें।" जैसे कि?
डेविड रिचेर्बी

-3

कृपया मुझे कॉल करें (मेरा नाम 1001001 है)। यदि आप मुझ तक नहीं पहुंच सकते हैं, तो कृपया अपने पास मौजूद फोन नंबर लिखें और ईव से मुझे वापस करने को कहें।

स्पष्टीकरण: यदि बॉब को मेरा अधिकार # मिल गया, तो वह मुझ तक पहुँच सकता है, तो मुझे पता है कि यह सही है #; अगर बॉब को मेरा अधिकार नहीं मिला, तो ईव मेरे (सही) फोन नंबर को भी नहीं पढ़ सकता है। इस तरह, मैंने पहले ही जांच लिया कि मेरे दोस्त, बॉब के पास मेरा सही फोन नंबर है या नहीं।


सदाबहार के लिए: ईव बॉब से संपर्क कर सकता है ताकि सबसे अधिक संभावना है कि वह अपने #। इसलिए, यदि आप पूछते हैं "अरे बॉब, मेरा नंबर आपके नंबर के बगल में है, तो कृपया सत्यापित करें", ईव आपको पता होगा #।
पोबोल वोंग

1
प्रश्न स्पष्ट रूप से कहता है कि आप बॉब को "कॉल मी" कहकर कार्ड नहीं भेज सकते। और बॉब कार्ड पर गलत नंबर लिख रहा है अगर वह कुछ भी नहीं जोड़ पाता है।
डेविड रिचरबी

मैंने पहले एक LZW एनकोड / डिकोड कार्यक्रम लिखा था। मैं बॉब को अपने फोन का एन्कोडेड # भेजने के लिए इसका इस्तेमाल करने के लिए कह सकता हूं और साथ ही अपने फोन के सही हिस्से को # उसे एनकोड करने के लिए भी इसका इस्तेमाल करने में सक्षम हूं।
पोबोल वोंग

डेविड रिचेर्बी: प्रश्न में केवल "आप उसे सीधे नहीं पूछ सकते हैं" जिसका अर्थ है कि मेरे पास, 1001001, बॉब को सीधे नहीं पूछ सकता है, लेकिन उसे मुझसे # फोन करने के लिए कहने में सक्षम होना चाहिए।
पोबोल वोंग

प्रश्न को अधिक ध्यान से पढ़ें। प्रश्न में "नोट 2" एक नोट भेजने के समाधान को अस्वीकार करता है बॉब आपको कॉल करने के लिए कहता है क्योंकि यह किसी भी कंप्यूटर विज्ञान का उपयोग नहीं करता है।
डेविड रिचरबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.