ब्लोफिश ब्रूस श्नियर द्वारा दिसंबर 1993 में आविष्कृत एक सममित ब्लॉक सिफर एल्गोरिदम है। ब्लोफिश एल्गोरिदम के कई फायदे हैं। यह हार्डवेयर कार्यान्वयन के लिए लागू और कुशल है और किसी लाइसेंस की आवश्यकता नहीं है। ब्लोफिश एल्गोरिदम के प्राथमिक ऑपरेटरों में तालिका लुकअप, जोड़ और XOR शामिल हैं। तालिका में चार S-बॉक्स और एक P-सरणी होती है।
ब्लोफिश एक सिफर है जो फिस्टेल राउंड पर निर्भर करता है, और F-फंक्शन के डिजाइन में उपयोग किए गए सिद्धांत DES में उपयोग किए गए सिद्धांतों का सरलीकरण हैं ताकि उच्च गति और सॉफ्टवेयर में प्रभावशीलता के साथ समान सुरक्षा का समर्थन किया जा सके।
ब्लोफिश एक 64-बिट सममित ब्लॉक सिफर है जिसे 32 से 448-बिट्स (14 बाइट्स) की परिवर्तनीय-लंबाई कुंजी की आवश्यकता होती है। एल्गोरिदम को 64-बिट्स प्लेनटेक्स्ट को 64-बिट्स सिफर टेक्स्ट में प्रभावी और सुरक्षित रूप से एन्क्रिप्ट करने के लिए डिज़ाइन किया गया था।
एल्गोरिदम के लिए चुने गए संचालन तालिका लुकअप, मॉड्यूलस, जोड़ और बिटवाइज़ एक्सक्लूसिव-ओर थे ताकि 32-बिट प्रोसेसर पर जानकारी एन्क्रिप्ट और डिक्रिप्ट करने के लिए आवश्यक समय को कम किया जा सके।
DES की तरह, ब्लोफिश में एन्क्रिप्शन और डिक्रिप्शन के लिए 16 राउंड फिस्टेल नेटवर्क शामिल है। लेकिन ब्लोफिश के हर राउंड के दौरान, डेटा के बाएं और दाएं 32-बिट्स को DES के विपरीत बदल दिया जाता है जो केवल दाएं 32-बिट्स को अगले राउंड के बाएं 32-बिट्स में विकसित करता है।
ब्लोफिश में F फंक्शन द्वारा बदले जाने से पहले बाएं 32-बिट्स पर बिटवाइज़ एक्सक्लूसिव-ओर ऑपरेशन लागू किया जाता है या अगले राउंड के लिए दाएं 32-बिट्स में प्रसारित किया जाता है।
ब्लोफिश में 16 राउंड के बाद दो एक्सक्लूसिव-ओर ऑपरेशन और एक स्वैप ऑपरेशन भी शामिल है। यह ऑपरेशन DES में लागू क्रमपरिवर्तन फंक्शन से अलग है।
एन्क्रिप्शन प्रक्रिया
एन्क्रिप्शन प्रक्रिया के दो पहलू हैं जिसमें जानकारी छवि प्लेन टेक्स्ट के रूप में और एन्क्रिप्शन कुंजी। इस विधि में, मूल छवि डेटा बिट स्ट्रीम को ब्लोफिश एल्गोरिदम की ब्लॉक लंबाई में विभाजित किया जाता है।
छवि हेडर को एन्क्रिप्ट करने की अनुमति नहीं है और बिटमैप पिक्सेल या सरणी की शुरुआत फ़ाइल के हेडर के ठीक बाद शुरू होती है। सरणी के बाइट घटक को बाएं से दाएं पंक्ति क्रम में सहेजा जाता है जिसमें प्रत्येक पंक्ति छवि की एक स्कैन लाइन को परिभाषित करती है और छवि की पंक्तियों को ऊपर से नीचे एन्क्रिप्ट किया जाता है।
डिक्रिप्शन प्रक्रिया
एन्क्रिप्टेड छवि को ब्लोफिश एल्गोरिदम की समकक्ष ब्लॉक लंबाई में ऊपर से नीचे विभाजित किया जाता है। पहला ब्लॉक डिक्रिप्शन फंक्शन में दर्ज किया जाता है और समकक्ष एन्क्रिप्शन कुंजी का उपयोग छवि को डिक्रिप्ट करने के लिए किया जा सकता है लेकिन सबकी का अनुप्रयोग उलट होता है। डिक्रिप्शन की प्रक्रिया छवि के विभिन्न ब्लॉकों के साथ ऊपर से नीचे तक बढ़ाई जाती है।
ब्लोफिश के लिए मूल एल्गोरिदम निम्नानुसार है:
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₁₈।