स्ट्रीम एन्क्रिप्शन SOLlTAlRE (PASYANS) का एल्गोरिथ्म B. Schneier द्वारा 1999 में प्रस्तावित किया गया था। सिफर पागल सुंदर है और मुझे समझ नहीं आता कि किसी ने अभी तक इसे रोशन क्यों नहीं किया है। स्टीवनसन के क्रिप्टोनोमिकॉन को किसी ने नहीं पढ़ा है? वास्तव में, पुस्तक पढ़ने के बाद, मैं इस चमत्कार से पीछे नहीं हट सकता।
सिद्धांत से, यह आउटपुट फीडबैक के साथ एक स्ट्रीम सिफर है। यह थ्रेडिंग से निम्नानुसार है कि मूल अनुक्रम का प्रत्येक वर्ण एक एन्क्रिप्टेड वर्ण के अनुरूप होगा। जो लोग नहीं जानते हैं, उदाहरण के लिए, अभी भी ब्लॉक सिफर हैं, उनमें एन्क्रिप्शन ब्लॉक (कई बाइट्स या वर्ण) में होता है। इसके अलावा, पाठ के ब्लॉक और तथाकथित गामा (कुछ यादृच्छिक गुप्त अनुक्रम) के कई प्रकार के युग्मन हैं। इस मामले में, आउटपुट फीडबैक का उपयोग किया जाता है, अर्थात। प्रत्येक गामा प्रतीक गामा की स्थिति को बदलता है।

एन्क्रिप्शन
एन्क्रिप्शन बेहद आसान है। 2 क्रम हैं:
- पीसी का उपयोग न करें
- AD JEN MWD OI
1 - पाठ एन्क्रिप्ट किया जाना है। 2 - गामा (इसके नीचे की पीढ़ी के बारे में)। जरूरत है कि पाठ को संख्याओं में अनुवाद करना और पाठ को 5 अक्षरों में तोड़ना है (यह क्रिप्टोग्राफ़िक शिष्टाचार है)। यदि कम अक्षर हैं, तो वे किसी प्रकार के सशर्त प्रतीक से भरे हुए हैं, उदाहरण के लिए, एक्स।
- 4 | 15 | 14 | 15 | 20 21 | 19 | 5 | 16 | 3 |
- 1 | 4 | 10 | 5 | 14 13 | 23 | 4 | 15 | 9 |
इसके बाद जोड़ है। यदि आपको 26 से अधिक संख्या मिलती है, तो 26 को उससे घटाया जाना चाहिए। उदाहरण 4 + 1 = 5, 20 + 14 = 8।
अंतिम क्रम: 5 | 19 | 24 | 20 | 8 8 | 16 | 9 | 5 | 12 | हम अक्षरों में अनुवाद करते हैं:
ESXTH HPIELप्रतिलिपि
संदेश को डिक्रिप्ट करना भी बहुत आसान है। ठीक वही गामा उत्पन्न होता है और गामा को सिफरटेक्स्ट से घटाया जाता है। यदि परिणाम शून्य से कम संख्या है, तो 26 को बस इसमें जोड़ा जाता है। उदाहरण 5-1 = 4, 8-14 = 20।
- 5 | 19 | 24 | 20 | 8 8 | 16 | 9 | 5 | 12 |
- 1 | 4 | 10 | 5 | 14 13 | 23 | 4 | 15 | 9 |
कुल हम 4 | 15 | 14 | 15 | 20 21 | 19 | 5 | 16 | 3 ->
उपयोग नहीं करते पीसीगामा पीढ़ी
यह एल्गोरिथ्म का यह हिस्सा है जो इस सिफर को इतना दिलचस्प बनाता है। कार्ड के एक पूर्ण डेक के लिए 52 कार्ड + 2 जोकर की आवश्यकता होती है। कार्ड को क्रमांकित किया जाना चाहिए, अधिमानतः मन में (आप एनएसए को अपना रहस्य नहीं जानना चाहते हैं)। ऐस से किंग तक 1 से 13 और सूट के अनुसार ऑर्डर इस प्रकार है क्लब्स, टैम्बॉरीन, वर्म्स, हुकुम। अंतिम 2 नंबर जोकर लेगा, जिसमें 53-ए, सबसे छोटा जोकर और 54-बी सीनियर जोकर को प्रतिष्ठित किया जाना चाहिए।
आपके पास 2 डेक होने चाहिए जो कि बिल्कुल समान होंगे। आपके पास एक डेक होगा, आपके मित्र के पास एक और डेक होगा, जो आपके संदेशों को डिक्रिप्ट करेगा।
धारणा में आसानी के लिए, मैं डेक को 28 कार्ड तक कम कर दूंगा। मान लीजिए शुरू में वे इस क्रम में व्यवस्थित थे:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 281 स्टेप। डेक से नीचे जूनियर जोकर 1 कार्ड को स्थानांतरित करें। यदि यह अंतिम है, तो इसे 1 कार्ड के बाद रखें।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
28 272 कदम। डेक के नीचे वरिष्ठ जोकर 2 पदों को स्थानांतरित करें। यदि यह अंतिम है, तो इसे 2 कार्डों के बाद रखें, यदि पेनोल्टिमेट, तो पहले कार्ड के बाद।
1
28 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
273 कदम। डेक के 2 चरम हिस्सों को स्वैप करें, 2 जोकरों द्वारा अलग किया गया। इस स्थिति में, संख्या 1 डेक के अंत में जाएगी।
28 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 1
4 कदम। आखिरी नंबर देखें। डेक की शुरुआत से इतने सारे कार्ड गिनें और उन्हें अंतिम कार्ड के सामने रखें। अंतिम कार्ड एल्गोरिथ्म की प्रतिवर्तीता के लिए जानबूझकर छोड़ा गया है।
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 1
5 कदम। 1 नंबर को देखो। इसके बाद इतने सारे कार्ड गिनें और इस नंबर को याद रखें। इस मामले में, यह 4 है। यह कुंजी अनुक्रम की पहली संख्या है। यह चरण डेक को परिवर्तित नहीं करता है। अगला, चरण 1 से 5 को बार-बार दोहराया जाता है। जहाँ n सिफर में वर्णों की संख्या है।
स्थानीयकरण
मैंने "सॉलिटेयर" के सिरिलिक संस्करण के बारे में भी सोचा। सब कुछ बहुत मुश्किल नहीं निकला। यदि पत्र को बाहर रखा गया है, तो 32 अक्षर रूसी भाषा में बने हुए हैं। +2 जोकर कुल 34 कार्ड। 6 ऐप के बिना सामान्य डेक।
कार्यान्वयन
सिफर का सार इसकी अदर्शनता है। खैर, अपने लिए जज करें कि अधिक पीला क्या दिखता है: लैपटॉप पर कार्ड या एन्क्रिप्शन प्रोग्राम का एक डेक? हालाँकि, बड़े पाठों को एन्क्रिप्ट करने और डिक्रिप्ट करने में बहुत समय लगता है। मुझे
कार्यान्वयन का एक पूरा समूह मिला। लेकिन उनमें से कोई भी PHP मेरे परिचित नहीं था। यह सिर्फ एक बहुत ही उबाऊ शाम थी और एक छोटा अनुप्रयोग पैदा हुआ था (नीचे लिंक)। आवेदन का आधार वर्ग "त्यागी" है। यह कुछ आवश्यक तरीकों को लागू करता है।
- एक संदेश तैयार करना। इसके भाषाई संबद्धता का निर्धारण, कुछ स्थिरांक और रेखा प्रसंस्करण का गठन।
- गामा तैयारी। अधिक सटीक, प्रारंभिक अनुक्रम जो उपयोगकर्ता सेट करता है। यह सिर्फ गामा निकला
- चरित्र द्वारा गामा चरित्र प्राप्त करना। समाधान शायद सबसे सुरुचिपूर्ण नहीं है (मुझे टिप्पणियों पर खुशी होगी)। प्रयुक्त थोक array_slice - array_merge।
- स्ट्रिंग्स को संख्याओं में बदलें और इसके विपरीत।
- लाइनों और घटाव (एन्क्रिप्शन और डिक्रिप्शन) का जोड़।
मूल्यांकन
इस तरह के एल्गोरिदम को केवल ब्रूट बल (ब्रूट बल) द्वारा डिक्रिप्ट किया जा सकता है। विभिन्न विश्लेषणात्मक तरीके व्यावहारिक रूप से इसके लिए लागू नहीं होते हैं। एल्गोरिथ्म की कमजोरी केवल इसकी कुंजी (डेक) में है। यदि वे डेक पर कब्जा करते हैं, तो वे इसे डिक्रिप्ट कर सकते हैं, और फिर, बशर्ते कि आप पूरी तरह से एल्गोरिथ्म का पालन करें।
लेखक स्वयं कई तरीके प्रदान करता है।
1. हर बार एक नई कुंजी का उपयोग करें। एक निश्चित व्यवस्था (समाचार पत्रों से पुल का एक स्तंभ, स्टॉक रेटिंग आदि से कुछ संख्या) की कुंजी लें। मुख्य बात उन पर सहमत होना है।
2. गामा प्राप्त करने के लिए एल्गोरिथ्म को थोड़ा बदल दें। फिर, डेक को हटाते समय, एनएसए अभी भी कुछ भी नहीं समझता है।
संदर्भ
एल्गोरिथ्म के लेखक द्वारा आधिकारिक लेख:
लिंकमेरा एन्क्रिप्शन और डिक्रिप्शन एप्लीकेशन:
लिंकPHP वर्ग संदर्भ:
लिंक