मैं एक लंबी कहानी कम करने जा रहा हूं। यह थोड़ी देर हो गया है कि मैं अपना खुद का एईएस एन्क्रिप्शन/डिक्रिप्शन प्रोग्राम लागू करना चाहता हूं। एन्क्रिप्शन प्रोग्राम अच्छी तरह से चला गया और बिना किसी त्रुटि या अजीब आउटपुट के एन्क्रिप्टिंग (चूंकि मैंने अपने प्रोग्राम के आउटपुट की तुलना एक व्यावसायिक वाणिज्यिक के साथ की है और परिणाम वही था)।एईएस डिक्रिप्शन एल्गोरिदम
विकिपीडिया इस कार्यान्वयन में मेरी मार्गदर्शिका थी (जिसमें) मैंने पढ़ा है "रिवर्स राउंड का एक सेट उसी एन्क्रिप्शन कुंजी का उपयोग करके सिफरटेक्स्ट को मूल सादे टेक्स्ट में बदलने के लिए लागू किया जाता है।"
वहाँ मॉड्यूल है कि मैं कार्यान्वित की जोड़ी हैं:
- दौर कुंजी
- शिफ्ट पंक्तियां जोड़ें
- उप बाइट्स
- मिक्स कॉलम
मैं रिवर्स कार्यान्वयन की भी लागू किया जोड़ी उपर्युक्त मॉड्यूल के:
- रिवर्स पारी पंक्तियों
- रिवर्स उप बाइट
- रिवर्स मिक्स कॉलम
नोट: मैं के बाद से रिवर्स दौर कुंजी को लागू नहीं किया, यह XOR एन्क्रिप्शन कुंजी के साथ प्लेन ing है, और XOR का रिवर्स XOR ही (मुझे ठीक कर लें मैं गलत हूँ)
तो मैं उलटे क्रम कि मैं एन्क्रिप्शन किया में यह मॉड्यूल putted है, लेकिन कभी मैं अपने सादे-पाठ वापस मिल है:
expandkey128(key);
rev_subbytes(data);
rev_shiftrows(data);
addroundkey(data,key,10);
for(int i = 9; i>= 1; i--) {
rev_subbytes(data);
rev_shiftrows(data);
rev_mixColum(data);
addroundkey(data,key,i);
}
addroundkey(data,key,0);
// Please note that I also did from 0 to 10 ,
// instead of 10 to 0 and didn't workout
और मैंने सोचा कि शायद मुझे मॉड्यूल के रिवर्स मॉडल को लागू नहीं करना चाहिए, शायद मुझे उन मॉड्यूल का उपयोग करना होगा जिन्हें मैंने एन्क्रिप्शन किया था, केवल रिवर्स ऑर्डर में; अच्छा अंदाजा लगाए? काम नहीं किया! :
expandkey128(key);
addroundkey(data,key,0);
for(int i = 1; i<= 9; i++) {
subbytes(data);
shiftrows(data);
mixColum(data);
addroundkey(data,key,i);
}
subbytes(data);
shiftrows(data);
addroundkey(data,key,10);
तो सवाल यह है कि क्या गलत है? || यदि आप करेंगे तो इन तथाकथित मॉड्यूल या फ़ंक्शंस को लागू करने का सही अनुक्रम क्या है?
आपने अपने एस-बॉक्स को सही ढंग से गणना की, क्योंकि आप उसी एन्क्रिप्शन का उपयोग नहीं कर सकते जिसे आप एन्क्रिप्शन के लिए उपयोग कर रहे हैं। http://en.wikipedia.org/wiki/S-box यह टिप्पणी विकिपीडिया में अंग्रेजी संस्करण में अनुपलब्ध है। सीधे spec पर एक नज़र डालें: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf आपने डिक्रिप्ट करने के लिए व्यस्त एस-बॉक्स की गणना की है। – evildead
हाँ वास्तव में rev_subbytes पर मेरे पास रिजेंडेल –
का व्यस्त एस-बॉक्स है, वहां एक बेहतरीन टूल है: http://www.cryptool.de/ इसमें आप हाथ से कोई भी परिवर्तन कर सकते हैं।हो सकता है कि आपको प्रत्येक चरण को डीबग करना होगा, हो सकता है कि टूल प्रत्येक चरण को सत्यापित करने के लिए आपकी सहायता करेगा। – evildead