एक प्रोग्राम लिखें जो इनपुट की दो लाइनें लेता है और प्लेफेयर एन्क्रिप्शन तकनीक के अनुसार दूसरे को एन्क्रिप्ट करने के लिए एक महत्वपूर्ण वाक्यांश के रूप में पहले का उपयोग करता है।
विकिपीडिया कुछ विस्तार में Playfair एन्क्रिप्शन का वर्णन करता है , लेकिन किसी भी अस्पष्टता से बचने के लिए, यहां एक संक्षिप्त सारांश है:
1. एक प्रमुख तालिका उत्पन्न करें:
J
कुंजी वाक्यांश में सभी आवृत्तियों को प्रतिस्थापित करें I
, फिर सभी गैर-वर्णमाला वर्णों और दोहराया वर्णों को पट्टी करें। 5 × 5 एन्क्रिप्शन टेबल में डालें, शेष कोशिकाओं को वर्णमाला के बाकी हिस्सों के साथ भरें (छोड़कर J
; हमें पसंद नहीं है J
)।
उदाहरण:
S T A C K
O V E R F
Stack Overflow --> STACKOVERFLW --> L W B D G
H I M N P
Q U X Y Z
2. संदेश को एन्क्रिप्ट करने के लिए तैयार करें
हर J
एक को बदलें I
, सभी गैर-वर्णमाला वर्णों को छीनें और जोड़े में विभाजित करें, X
किसी भी जोड़े को तोड़ने के लिए जो एक ही अक्षर को दो बार जोड़ते हैं। यदि आप विषम संख्या में अक्षरों के साथ समाप्त होते हैं X
, तो अंत में जोड़ें । (नोट: - अंकों पूर्ण में लिखा गया है करने के लिए जा ONE
, TWO
, THREE
, आदि - लेकिन आप यह पहले से ही आप के लिए किया गया है यह मान सकते हैं।)
उदाहरण:
In:
The cat crept into the crypt, crapped, and crept out again.
Out:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
3. एन्क्रिप्शन
बारी-बारी से अक्षरों के प्रत्येक जोड़े को एन्क्रिप्ट करें। यदि वे कुंजी तालिका के अलग-अलग पंक्तियों और स्तंभों में हैं, तो प्रत्येक को उस पंक्ति के अक्षर से उस स्तंभ से बदलें जहाँ अन्य अक्षर पाए जाते हैं (जैसे, VM
⇒ EI
, LZ
⇒ GQ
)। यदि वे एक ही पंक्ति (या स्तंभ) में हैं, तो दो अक्षरों को तुरंत दाईं ओर (या नीचे) चुनें, यदि आवश्यक हो तो चारों ओर लपेटें (जैसे, OE
⇒ VR
, ZG
⇒ KP
)।
उदाहरण:
In:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
Out:
SI RA CA RD FM VU IC VS MO RD ZN AK EC MZ MF BC YN RD FM SV TV KB TM MY
इस प्रक्रिया द्वारा निर्मित स्ट्रिंग एन्क्रिप्टेड संदेश है, जिसे आपके प्रोग्राम को आउटपुट करना चाहिए।
नियम:
- इनपुट टेक्स्ट और कुंजी
stdin
कमांड लाइन आर्ग्युमेंट्स या ऐसे अन्य स्रोतों से प्राप्त की जा सकती है । हार्ड-कोडित इनपुट की अनुमति नहीं है। - आपके प्रोग्राम को पास वाक्यांश और संदेश के लिए ऊपरी और निचले दोनों प्रकार के पाठ को स्वीकार करना चाहिए।
- एन्क्रिप्टेड आउटपुट ऊपरी या निचला मामला हो सकता है।
- आपके कार्यक्रम को लंबाई में कम से कम 64 अक्षरों के प्रमुख वाक्यांशों को स्वीकार करना चाहिए, और कम से कम 16 केबी के संदेश ग्रंथों को लिखना चाहिए।
- आपको गैर-एएससीआईआई इनपुट को संभालने की आवश्यकता नहीं है।
- आप
XX
एन्क्रिप्शन के दौरान होने वाली अक्षर जोड़ी की संभावना को अनदेखा कर सकते हैं । - कार्यक्रम के आउटपुट में व्हॉट्सएप को जोड़ने की कोई आवश्यकता नहीं है।
- आपके उत्तर में एक संदेश, मुख्य वाक्यांश और आपके प्रोग्राम द्वारा निर्मित एन्क्रिप्टेड आउटपुट का उदाहरण शामिल होना चाहिए।
- यह एक कोड गोल्फ चुनौती है, इसलिए सबसे छोटा कोड (बाइट्स में) वाला उत्तर जीत जाएगा।
नोट: कृपया याद रखें कि आपको केवल एक ही जोड़ी में दिखाई देने पर लगातार अक्षरों को तोड़ने की आवश्यकता है । इसलिए उदाहरण के लिए
MASSACHUSETTS
एन्क्रिप्ट किया जाना चाहिएMA SX SA CH US ET TS
- डबलS
को विभाजित करना होगा, लेकिन डबलT
नहीं करता है।
J
" क्या आप एपीएल के बारे में समान भावनाओं को परेशान करते हैं ?