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

अपना खुद का सीज़र सिफर एनकोडर कैसे लिखें

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

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

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

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

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

अपना खुद का सीज़र सिफर एनकोडर कैसे लिखें

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

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

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

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

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

आइए इसे तोड़ दें :

वर्ण विधि स्ट्रिंग को वर्णों की एक सरणी में विभाजित करती है और यह एक गणक देता है। परिणामस्वरूप हम मानचित्र . पर कॉल कर सकते हैं सरणी पर।

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

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

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

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

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

[116, 101, 115, 116]

घूर्णन समय

बढ़िया!

अगला कदम यह है कि हम जितने घुमाव चाहते हैं उन्हें जोड़ना है। हम ऐसा मानचित्र  . का उपयोग करके कर सकते हैं फिर से:

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

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

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

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

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

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

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

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

एक वैकल्पिक संस्करण भी है जो Array#rotate

. का उपयोग करता है

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


  1. अपना खुद का क्यूआर कोड कैसे बनाएं?

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

  1. रूबी के कार्य और तरीके:अपना खुद का कैसे परिभाषित करें

    रूबी विधि क्या है? एक विशिष्ट उद्देश्य के लिए एक साथ समूहीकृत रूबी कोड की एक, या एकाधिक, एक विधि है। इस समूहीकृत कोड को एक नाम दिया गया है, ताकि आप जब चाहें, कोड को दोबारा लिखे या कॉपी और पेस्ट किए बिना इसका उपयोग कर सकें। विधि का उद्देश्य हो सकता है : जानकारी प्राप्त करें। वस्तुओं को बदलें या ब

  1. अपना खुद का ब्राउज़र एक्सटेंशन कैसे लिखें [उदाहरण परियोजना शामिल]

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