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

ब्लोफिश एल्गोरिदम के संचालन क्या हैं?


ब्लोफिश एक सममित ब्लॉक सिफर एल्गोरिदम है और यह एक समय में 64-बिट्स के ब्लॉक जानकारी को एन्क्रिप्ट करता है। यह फिस्टेल नेटवर्क का पालन करता है और इस एल्गोरिदम की कार्य प्रक्रिया दो भागों में विभाजित है।

  • सबकी जनरेशन - यह प्रक्रिया 448 बिट्स तक लंबी कुंजी को 4168 बिट्स जोड़ने वाली सबकी में बदल देती है।

  • डेटा-एन्क्रिप्शन - डेटा एन्क्रिप्शन प्रक्रिया में, यह नेटवर्क के 16 बार पुनरावृति करेगा। प्रत्येक राउंड में कुंजी-निर्भर क्रमपरिवर्तन, और कुंजी-और डेटा-निर्भर प्रतिस्थापन शामिल हैं। एल्गोरिदम में संचालन 32-बिट शब्दों पर XOR या जोड़ हैं। प्रति राउंड केवल चार अनुक्रमित सरणी जानकारी लुकअप अतिरिक्त संचालन हैं।

आइए इन दो भागों पर चर्चा करें:

  • सबकी जनरेशन - ब्लोफिश क्रिप्टोग्राफ़िक एल्गोरिदम बड़ी संख्या में सबकी का उपयोग करता है। ये कुंजियाँ किसी भी डेटा एन्क्रिप्शन या डिक्रिप्शन से पहले बनाई जाती हैं।

    P-सरणी में 18, 32-बिट सबकी शामिल हैं:

    P1, P2, ..., P18।

    चार 32-बिट S-बॉक्स हैं जिनमें प्रत्येक में 256 प्रविष्टियां हैं:

    S1,0, S1,1... S1,255

    S2,0, S2,1... S2,255

    S3,0, S3,1... S3,255

    S4,0, S4,1... S4,255

    सबकी जनरेट करने के चरण

    • पहले P-सरणी और फिर चार S-बॉक्स को क्रम में एक निश्चित स्ट्रिंग के साथ आरंभ करें और यह स्ट्रिंग पाई के हेक्साडेसिमल अंकों को भी शामिल करती है।

      P1=0x243f6a88, P2=0x85a308d3, P3=0x13198a2e, P4=0x3707344, आदि।

    • P1 को कुंजी के पहले 32 बिट्स के साथ XOR करें, P2 को दूसरे 32-बिट्स के साथ XOR करें, आदि। कुंजी के सभी बिट्स के लिए (संभावित रूप से P14 तक)। कुंजी बिट्स के माध्यम से प्रक्रिया को बार-बार चक्रित करें जब तक कि पूरी P-सरणी कुंजी बिट्स के साथ XOR न हो जाए। (प्रत्येक छोटी कुंजी के लिए, एक आंशिक रूप से समकक्ष लंबी कुंजी होती है। उदाहरण के लिए, यदि A एक 64-बिट कुंजी है, तो AA, AAA, आदि समान कुंजियाँ हैं।)

    • यह ब्लोफिश एल्गोरिदम का उपयोग करके ऑल-जीरो स्ट्रिंग को एन्क्रिप्ट कर सकता है, चरण 1 और चरण 2 में परिभाषित सबकी का उपयोग करके।

    • यह चरण (3) के 64 बिट आउटपुट के साथ P1 और P2 को प्रतिस्थापित कर सकता है।

    • यह बदली हुई सबकी के साथ एल्गोरिदम का उपयोग करके चरण (3) के आउटपुट को एन्क्रिप्ट कर सकता है।

    • यह चरण (5) के आउटपुट के साथ P3 और P4 को प्रतिस्थापित कर सकता है।

    • इस प्रक्रिया को जारी रखने के लिए उपयोग किया जा सकता है, लगातार बदलते एल्गोरिदम के आउटपुट के साथ P सरणी के सभी प्रविष्टियों को, और फिर क्रम में सभी चार S-बॉक्स को प्रतिस्थापित करना।

  • कुल 521 पुनरावृत्तियों की आवश्यकता होती है सभी आवश्यक सबकी बनाने के लिए। एप्लिकेशन इस व्युत्पत्ति प्रक्रिया को कई बार निष्पादित करने के बजाय सबकी को सहेज सकते हैं।

  • डेटा एन्क्रिप्शन - ब्लोफिश 16 राउंड वाला एक फिस्टेल नेटवर्क है।

    इनपुट एक 64-बिट डेटा तत्व, x है।

    x को दो 32-बिट हिस्सों में विभाजित करें: xₗ, xᵣ।

    फिर, i = 1 से 16 के लिए;

    xₗ = xₗ XOR Pᵢ

    xᵣ = F(xₗ) XOR xᵣ

    xₗ और xᵣ को स्वैप करें

    16वें राउंड के बाद, अंतिम स्वैप को पूर्ववत करने के लिए xₗ और xᵣ को फिर से स्वैप करें।

    फिर, सिफरटेक्स्ट = xₗ और xᵣ का संयोजन, xᵣ = xᵣ XOR P17 और xₗ = xₗ XOR P₁₈।

    अंत में, सिफरटेक्स्ट प्राप्त करने के लिए xₗ और xᵣ को पुनः संयोजित करें। डिक्रिप्शन एन्क्रिप्शन के समान है, सिवाय इसके कि P1, P2,...P18 का उपयोग रिवर्स क्रम में किया जाता है।


  1. - C टोकन क्या हैं?

    C प्रोग्राम निर्देशों का एक संग्रह है और प्रत्येक निर्देश व्यक्तिगत इकाइयों का एक संग्रह है।C प्रोग्राम की हर छोटी व्यक्तिगत इकाई को आमतौर पर टोकन कहा जाता है और C प्रोग्राम में प्रत्येक निर्देश टोकन का एक संग्रह है।टोकन का उपयोग C प्रोग्राम बनाने के लिए किया जाता है और उन्हें C प्रोग्राम के बुनियाद

  1. C भाषा में शिफ्ट ऑपरेशन क्या हैं? C भाषा में शिफ्ट ऑपरेशन क्या हैं?

    समस्या C भाषा का उपयोग करके किसी संख्या के बाएं शिफ्ट, दाएं शिफ्ट और कॉम्प्लीमेंट को दिखाने का सरल प्रोग्राम क्या है? समाधान बाएं शिफ्ट (Left Shift) यदि किसी वेरिएबल का मान एक बार बाएं शिफ्ट किया जाता है, तो उसका मान दोगुना हो जाता है। उदाहरण के लिए, a = 10, तो a<<1 = 20 दाएं शिफ्ट (Right Sh

  1. - C# में कमेंट्स क्या हैं

    कमेंट्स कोड समझाने के लिए उपयोग किए जाते हैं। कंपाइलर कमेंट एंट्रीज़ को इग्नोर करता है। C# प्रोग्राम्स में मल्टीलाइन कमेंट्स /* से शुरू होते हैं और */ कैरेक्टर्स से समाप्त होते हैं। मल्टी-लाइन कमेंट्स /* The following is a mult-line comment In C# /* /*...*/ को कंपाइलर इग्नोर करता है और इसे प्रोग्राम