ब्लोफिश दिसंबर 1993 में ब्रूट श्नेयर द्वारा आविष्कार किया गया एक सममित ब्लॉक सिफर एल्गोरिथ्म है। ब्लोफिश एल्गोरिथ्म के कई फायदे हैं। यह हार्डवेयर कार्यान्वयन के लिए लागू और कुशल है और किसी लाइसेंस की आवश्यकता नहीं है। ब्लोफिश एल्गोरिथम के प्राथमिक ऑपरेटरों में टेबल लुकअप, जोड़ और एक्सओआर शामिल हैं। तालिका में चार एस-बॉक्स और एक पी-सरणी है।
ब्लोफिश एक सिफर है जो फिस्टल राउंड पर निर्भर करता है, और एफ-फ़ंक्शन के डिज़ाइन का उपयोग डीईएस में उपयोग किए गए सिद्धांतों के सरलीकरण के लिए किया जाता है ताकि सॉफ़्टवेयर में उच्च गति और प्रभावशीलता के साथ समान सुरक्षा का समर्थन किया जा सके।
ब्लोफिश एक 64-बिट सममित ब्लॉक सिफर है जिसे 32 से 448-बिट्स (14 बाइट्स) तक एक चर-लंबाई कुंजी की आवश्यकता होती है। एल्गोरिथम को 64-बिट्स प्लेनटेक्स्ट को प्रभावी ढंग से और सुरक्षित रूप से 64-बिट्स सिफर टेक्स्ट में एन्क्रिप्ट करने के लिए तैयार किया गया था।
एल्गोरिथम के लिए चुने गए ऑपरेशन टेबल लुकअप, मॉड्यूलस, एडिशन और बिटवाइज एक्सक्लूसिव थे-या 32-बिट प्रोसेसर पर जानकारी को एन्क्रिप्ट और डिक्रिप्ट करने के लिए आवश्यक समय को कम करने के लिए।
डेस के साथ, ब्लोफिश में एन्क्रिप्शन और डिक्रिप्शन के लिए 16 राउंड फिस्टल नेटवर्क शामिल है। लेकिन ब्लोफिश के हर दौर के दौरान, बाएँ और दाएँ 32-बिट डेटा को DES के विपरीत बदल दिया जाता है, जो अगले राउंड के 32-बिट्स में विकसित होने के लिए केवल दाएँ 32-बिट्स को बदलता है।
ब्लोफिश में बिटवाइज़ एक्सक्लूसिव-या ऑपरेशन शामिल है जिसे F फ़ंक्शन द्वारा परिवर्तित किए जाने से पहले 32-बिट्स के बाईं ओर कार्यान्वित किया जाना है या अगले राउंड के लिए दाईं ओर 32-बिट्स में प्रचारित किया जाना है।
ब्लोफिश में दो एक्सक्लूसिव-या ऑपरेशन भी शामिल हैं जिन्हें 16 राउंड और एक स्वैप ऑपरेशन के बाद लागू किया जाना है। यह ऑपरेशन DES में लागू किए गए क्रमपरिवर्तन फ़ंक्शन से अलग है।
एन्क्रिप्शन प्रक्रिया - एन्क्रिप्शन प्रक्रिया की दो खबरें हैं, जिनमें सादा पाठ के रूप में सूचना छवि और एन्क्रिप्शन कुंजी शामिल हैं। इस पद्धति में, मूल छवि डेटा बिट स्ट्रीम को ब्लोफिश एल्गोरिथम की ब्लॉक लंबाई में विभाजित किया जाता है।
छवि शीर्षलेख एन्क्रिप्ट करने के लिए अनधिकृत है और बिटमैप पिक्सेल या सरणी की शुरुआत फ़ाइल के शीर्षलेख के ठीक बाद शुरू होती है। सरणी के बाइट घटक को बाएं से दाएं पंक्ति क्रम में सहेजा जाता है, प्रत्येक पंक्ति छवि की एक स्कैन लाइन को परिभाषित करती है और छवि की पंक्तियों को ऊपर से नीचे तक एन्क्रिप्ट किया जाता है।
डिक्रिप्शन प्रक्रिया - एन्क्रिप्ट की गई छवि को ऊपर से नीचे तक ब्लोफिश एल्गोरिथम के बराबर ब्लॉक लंबाई में विभाजित किया गया है। पहला ब्लॉक डिक्रिप्शन फ़ंक्शन में दर्ज किया जाता है और समकक्ष एन्क्रिप्शन कुंजी का उपयोग छवि को डिक्रिप्ट करने के लिए किया जा सकता है लेकिन उप कुंजियों का अनुप्रयोग उलट जाता है। डिक्रिप्शन की प्रक्रिया ऊपर से नीचे तक छवि के विभिन्न ब्लॉकों के साथ विस्तारित होती है।
ब्लोफिश के लिए मूल एल्गोरिथम इस प्रकार है -
x को दो 32-बिट हिस्सों में विभाजित करें:xL , एक्स<उप>आरउप> ।
फिर, i =1 से 16 के लिए;
x<उप>एलउप> =x<उप>एलउप> एक्सओआर पाई
x<उप>आरउप> =एफ(एक्स<उप>एलउप> ) एक्सओआर एक्स<उप>आरउप>
स्वैप xL और xR
16 वें . के बाद राउंड, स्वैप xL और xR पिछले स्वैप को फिर से पूर्ववत करने के लिए।
फिर, सिफरटेक्स्ट =xL . का संयोजन और xR , एक्स<उप>आरउप> =x<उप>आरउप> XOR P17 और xL =x<उप>एलउप> एक्सओआर पी<उप>18उप> ।