Affine सिफर

Affine सिफर

मध्यम

निर्देश

एफाइन सिफर का एक इम्प्लीमेंटेशन बनाइए। एफाइन सिफर मध्य पूर्व में बनी एक प्राचीन एन्क्रिप्शन प्रणाली है।

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

एन्क्रिप्शन

एन्क्रिप्शन फंक्शन यह है:

E(x) = (ai + b) mod m

जहाँ:

  • i अक्षर का इंडेक्स है, जो 0 से लेकर वर्णमाला की लंबाई से एक कम तक होता है।
  • m वर्णमाला की लंबाई है। रोमन वर्णमाला के लिए m का मान 26 होता है।
  • a और b पूर्णांक हैं, जो मिलकर एन्क्रिप्शन कुंजी बनाते हैं।

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

इस अभ्यास के लिए अंक मान्य इनपुट हैं, लेकिन उन्हें एन्क्रिप्ट नहीं किया जाता। स्पेस और विराम चिह्न शामिल नहीं किए जाते। सिफरटेक्स्ट को तय लंबाई के समूहों में लिखा जाता है, जिनके बीच स्पेस रहता है, और पारंपरिक समूह आकार 5 अक्षरों का होता है। ऐसा इसलिए किया जाता है ताकि शब्दों की सीमाओं के आधार पर एन्क्रिप्ट किए गए टेक्स्ट का अनुमान लगाना मुश्किल हो जाए।

डिक्रिप्शन

डिक्रिप्शन फंक्शन यह है:

D(y) = (a^-1)(y - b) mod m

जहाँ:

  • y किसी एन्क्रिप्ट किए गए अक्षर का संख्यात्मक मान है, यानी y = E(x) होता है
  • यह ध्यान देना ज़रूरी है कि a^-1, a mod m का मॉड्यूलर मल्टीप्लिकेटिव इनवर्स (MMI) है
  • मॉड्यूलर मल्टीप्लिकेटिव इनवर्स तभी मौजूद होता है जब a और m सहअभाज्य हों।

a का MMI वह x होता है जिसके लिए ax को m से भाग देने पर शेषफल 1 आता है:

ax mod m = 1

मॉड्यूलर मल्टीप्लिकेटिव इनवर्स कैसे निकालें और इसका क्या अर्थ है, इसकी अधिक जानकारी संबंधित विकिपीडिया लेख में मिल सकती है।

सामान्य उदाहरण

  • कुंजी a = 5, b = 7 के साथ "test" को एन्क्रिप्ट करने पर "ybty" मिलता है
  • कुंजी a = 5, b = 7 के साथ "ybty" को डिक्रिप्ट करने पर "test" मिलता है
  • गलत कुंजी a = 11, b = 7 के साथ "ybty" को डिक्रिप्ट करने पर "lqul" मिलता है
  • कुंजी a = 19, b = 13 के साथ "kqlfd jzvgy tpaet icdhm rtwly kqlon ubstx" को डिक्रिप्ट करने पर "thequickbrownfoxjumpsoverthelazydog" मिलता है
  • कुंजी a = 18, b = 13 के साथ "test" को एन्क्रिप्ट करना एरर है, क्योंकि 18 और 26 सहअभाज्य नहीं हैं

मॉड्यूलर मल्टीप्लिकेटिव इनवर्स (MMI) निकालने का एक उदाहरण

a = 15 के लिए MMI निकालना:

  • (15 * x) mod 26 = 1
  • (15 * 7) mod 26 = 1, यानी 105 mod 26 = 1
  • 7, 15 mod 26 का MMI है

स्रोत

Wikipediaयह लिंक एक नई विंडो या टैब में खुलता है
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Scheme Exercism

Affine सिफर शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Scheme को 39 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।