ब्लोफिश एक सममित ब्लॉक सिफर एल्गोरिदम है और यह एक समय में 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 का उपयोग रिवर्स क्रम में किया जाता है।