Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

अपना खुद का सीज़र सिफर एन्कोडर बनाएं: एक चरण-दर-चरण मार्गदर्शिका

क्या आपने कभी सीज़र सिफर के बारे में सुना है?

जूलियस सीज़र ने इस तकनीक का उपयोग अपने दुश्मनों से गुप्त संदेश छिपाने के लिए किया था!

सीज़र सिफर सबसे प्राचीन एन्क्रिप्शन तकनीकों में से एक है।

इस प्रणाली के पीछे मुख्य विचार अक्षरों को घुमाना वर्णमाला पर x संख्या में स्थितियों द्वारा है।

उदाहरण के लिए, x = 1 के साथ, एक 'A' 'B' बन जाता है, एक 'C' 'D' बन जाता है और इसी तरह।

अपना खुद का सीज़र सिफर एन्कोडर बनाएं: एक चरण-दर-चरण मार्गदर्शिका

तो हम इसे कोड में कैसे लागू करते हैं?

खुशी है कि आपने पूछा, यह पता चलता है कि यह उतना कठिन नहीं है जितना लगता है। हम इस तथ्य का लाभ उठाने जा रहे हैं कि अक्षरों को संख्याओं (ASCII कोड) द्वारा दर्शाया जा सकता है, जो अक्षरों को घुमाने का काम केवल दो संख्याओं को एक साथ जोड़ने का मामला बना देगा।

अपना खुद का सीज़र सिफर कनवर्टर बनाना

हम एक इनपुट स्ट्रिंग को एक पूर्णांक सरणी में बदलकर शुरू करेंगे:

ascii = "test".chars.map(&:ord)

आइए इसे तोड़ते हैं:

chars विधि स्ट्रिंग को अक्षरों की एक सरणी में विभाजित करती है और एक एन्यूमरेटर लौटाती है। परिणामस्वरूप हम सरणी पर map कॉल कर सकते हैं।

map विधि तब बहुत उपयोगी होती है जब हम किसी सरणी के सभी तत्वों को किसी तरह से बदलना चाहते हैं। map का रिटर्न मान परिवर्तित तत्वों के साथ एक और सरणी होता है।

नोट: इस सिंटैक्स के लिए रूबी 1.9+ की आवश्यकता होती है, और यह इसके समतुल्य है:

 ascii = "test".chars.map { |c| c.ord } 

चूंकि हम हर अक्षर को उसके संबंधित ASCII मान में बदलना चाहते हैं, हम सरणी के हर तत्व पर ord विधि को कॉल करते हैं।

हमारे उदाहरण में, आउटपुट यह होगा:

[116, 101, 115, 116]

रोटेशन का समय

बहुत बढ़िया!

अगला कदम उन रोटेशन्स की संख्या को जोड़ना है जो हम चाहते हैं। हम इसे फिर से map का उपयोग करके कर सकते हैं:

 shifted = ascii.map { |c| c + 5 } => [121, 106, 120, 121]

अब हम बस संख्याओं को वापस अक्षरों में बदल सकते हैं, और उन्हें जोड़ सकते हैं, जो हमें एन्क्रिप्टेड स्ट्रिंग देगा:

 shifted.map { |c| c.chr }.join => "yjxy"

हमारे मूल स्ट्रिंग को पुनः प्राप्त करने के लिए हमें बस उसी प्रक्रिया को फिर से लागू करना होगा, लेकिन इस बार बाईं ओर शिफ्ट करना होगा।

मूल रूप से हमारे द्वारा उपयोग की गई स्थितियों की समान मात्रा से शिफ्ट करना महत्वपूर्ण है; अन्यथा, हम अपना मूल डेटा पुनर्प्राप्त नहीं कर पाएंगे।

अंतिम कोड और वैकल्पिक संस्करण

आप तैयार सीज़र सिफर कोड यहां पा सकते हैं।

यह एक दी गई स्ट्रिंग के लिए सभी 26 संभावित पुनरावृत्तियों का उत्पादन करता है और यह रैपिंग को भी संभालता है (पोस्ट में उदाहरण नहीं करते)।

एक वैकल्पिक संस्करण भी है जो Array#rotate का उपयोग करता है।

आपको यह भी पसंद आ सकता है:
रूबी स्ट्रिंग फॉर्मेटिंग

  1. अपने खुद के QR कोड कैसे बनाएं? अपने खुद के QR कोड कैसे बनाएं?

    आजकल, कई एप्लिकेशन और कमर्शियल कंपनियां अपने ग्राहकों को बढ़ाने के लिए QR कोड का उपयोग कर रही हैं। QR कोड स्वयं विवरण बताए बिना दूसरों के साथ जानकारी साझा करने का सबसे आसान तरीका है। यह इन वर्षों में बहुत अधिक लोकप्रिय हो गया है क्योंकि हर किसी के पास QR कोड स्कैन करने के लिए कैमरे वाला फोन है। हाला

  1. Ruby मेथड्स समझाए गए: आसानी से कस्टम फंक्शन्स बनाएं Ruby मेथड्स समझाए गए: आसानी से कस्टम फंक्शन्स बनाएं

    मेथड्स को कैसे परिभाषित करें Ruby प्रोग्रामिंग भाषा में कई शक्तिशाली बिल्ट-इन मेथड्स हैं जिनका आप उपयोग कर सकते हैं, लेकिन आप अपने खुद के भी बना सकते हैं। कैसे? आप def कीवर्ड का उपयोग करके अपनी खुद की इंस्टेंस मेथड को परिभाषित कर सकते हैं। यहाँ सिंटैक्स है: def gimme_bacon puts Bacon plz. end यहा

  1. अपना ब्राउज़र एक्सटेंशन बनाएं: नमूना प्रोजेक्ट के साथ चरण-दर-चरण गाइड अपना ब्राउज़र एक्सटेंशन बनाएं: नमूना प्रोजेक्ट के साथ चरण-दर-चरण गाइड

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