Vigenère सिफर एक सरल बहु वर्णी सिफर है कि मूल रूप से कई सीज़र सिफर से एक लागू करने, एक कुंजी से था। मूल रूप से कुंजी के अक्षर इंगित करते हैं कि उपयोग करने के लिए वर्णमाला को स्थानांतरित कर दिया। उस छोर तक एक सरल उपकरण था, जिसे विगेनेयर स्क्वायर कहा जाता था :
यहां प्रत्येक पंक्ति एक अलग वर्णमाला है, जो कुंजी के संबंधित अक्षर से शुरू होती है। तब स्तंभों का उपयोग सिफर अक्षर को निर्धारित करने के लिए किया जाता है। डिक्रिप्शन बहुत ही फैशन में काम करता है, केवल इसके विपरीत।
मान लीजिए हम स्ट्रिंग को एन्क्रिप्ट करना चाहते हैं CODEGOLF
। हमें भी एक कुंजी की आवश्यकता है। इस मामले में कुंजी होगी FOOBAR
। जब कुंजी प्लेनटेक्स्ट से छोटी होती है तो हम इसे पुनरावृत्ति द्वारा बढ़ाते हैं, इसलिए वास्तविक कुंजी जिसका हम उपयोग करते हैं FOOBARFO
। अब हम कुंजी का पहला अक्षर देखते हैं, जिसे F
वर्णमाला खोजना है। यह शुरू होता है, शायद अनिश्चित रूप से, के साथ F
। अब हम कॉलम को प्लेनटेक्स्ट के पहले अक्षर से देखते हैं और परिणामी अक्षर है H
। दूसरे पत्र के लिए हमारे पास O
प्रमुख पत्र और सादे पाठ पत्र हैं, जिसके परिणामस्वरूप C
। इस तरह से आगे बढ़ते हुए आखिरकार हम प्राप्त करते हैं HCRFGFQT
।
कार्य
आपका काम अब संदेशों को समझना है, एक कुंजी दी गई है। हालाँकि, जब से हम 16 वीं सदी से आगे निकल चुके हैं और हमारे पास कंप्यूटर हैं, हमें कम से कम थोड़ी बड़ी वर्णमाला का समर्थन करना चाहिए:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
विगेनेयर वर्ग का निर्माण अभी भी बहुत समान है और सिफर अभी भी उसी तरह से काम करता है। यह बस थोड़ा सा है ... पूर्ण रूप से यहाँ देने के लिए तैयार नहीं है।
इनपुट
इनपुट मानक इनपुट पर पाठ की दो अलग-अलग लाइनों के रूप में दिया जाता है, प्रत्येक को एक पंक्ति विराम द्वारा समाप्त किया जाता है। पहली पंक्ति में कुंजी होती है जबकि दूसरी में सिफरटेक्स्ट होता है।
उत्पादन
एक एकल पंक्ति, जिसमें डिकिफ़र्ड संदेश होता है।
जीतने की स्थिति
चूंकि एन्क्रिप्शन को कभी-कभी एक हथियार के रूप में माना जाता है, आसान तस्करी की सुविधा के लिए कोड छोटा होना चाहिए। जितना छोटा होगा, यह खोज की संभावना को कम करता है।
नमूना इनपुट 1
Key
miQ2eEO
नमूना उत्पादन 1
Message
नमूना इनपुट 2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
नमूना आउटपुट 2
ThisWorksEquallyWellWithNumbers123894576
एक हफ्ता बीत गया। वर्तमान में सबसे छोटा समाधान स्वीकार कर लिया गया है। रुचि रखने वालों के लिए, हमारी प्रतियोगिता में हमारे पास निम्न प्रस्तुतियाँ और लंबाई थीं:
130 - पायथन
146 - हास्केल
195 - सी
197 - सी
267 - वीबी.नेट
और हमारे अपने समाधान जो दूसरों के साथ रैंक नहीं किए गए थे:
108 - रूबी
139 - पॉवरशेल