मैंने हाल ही में ब्रूस शनीयर द्वारा एप्लाइड क्रिप्टोग्राफी की प्रतिलिपि उठाई और यह एक अच्छा पढ़ा गया है। अब मैं समझता हूं कि किताब के काम में कितने एल्गोरिदम उल्लिखित हैं, और मैं उनमें से कुछ को सी32-बिट परिवर्तनीय 32 बिट्स को स्थानांतरित करने के बारे में क्या बुरा है?
एक बात यह है कि कई एल्गोरिदम सामान्य हैं जो एक्स-बिट कुंजी को विभाजित कर रहे हैं कई छोटी वाई-बिट कुंजी। उदाहरण के लिए, ब्लोफिश की कुंजी, एक्स 64-बिट्स है, लेकिन आपको इसे दो 32-बिट हिस्सों में तोड़ने की आवश्यकता है; एक्सएल और एक्सआर।
यह वह जगह है जहां मैं अटक गया हूं। मैं सी के साथ काफी सभ्य हूं, लेकिन जब मैं बिटवाई ऑपरेटरों और इसी तरह की बात करता हूं तो मैं सबसे मजबूत नहीं हूं।
आईआरसी पर कुछ मदद के बाद, मैं इन दो मैक्रो के साथ आने में कामयाब रहे:
#define splitup(a, b, c) {b = a >> 32; c = a & 0xffffffff; }
#define combine(a, b, c) {a = (c << 32) | a;}
जहां एक 64 बिट्स और बी और सी 32 बिट कर रहे हैं। हालांकि, संकलक मुझे इस तथ्य के बारे में चेतावनी देता है कि मैं 32 बिट्स द्वारा 32 बिट वैरिएबल को स्थानांतरित कर रहा हूं।
मेरे सवालों का ये हैं:
- क्या एक 32-बिट चर 32 बिट स्थानांतरण के बारे में बुरा है? मुझे लगता है कि यह अपरिभाषित है, लेकिन ये मैक्रोज़ काम कर रहे प्रतीत होते हैं।
- इसके अलावा, क्या आप सुझाव देंगे कि मैं इस बारे में किसी अन्य तरीके से जाऊं?
जैसा कि मैंने कहा, मैं सी से काफी परिचित हूं, लेकिन थोड़ा सा ऑपरेटर और अभी भी मुझे सिरदर्द देता है।
संपादित
मैं पता लगा कि मेरी गठबंधन मैक्रो वास्तव में दो 32-बिट चर के संयोजन था, लेकिन केवल एक से 0 Oring, और एक परिणाम के रूप में एक हो रही।
तो, मेरे पिछले प्रश्नों के शीर्ष पर, मेरे पास अभी भी 64-बिट एक प्राप्त करने के लिए दो 32-बिट चर के संयोजन की विधि नहीं है; इसे करने के तरीके पर एक सुझाव की सराहना की जाएगी।
+1, भयानक सवाल, सही तरीके से प्रारूपित करने के लिए समय निकालने के लिए धन्यवाद और स्टैक ओवरफ़्लो में आपका स्वागत है! –
वैसे, मैं शर्त लगाता हूं कि आपके गठबंधन मैक्रो को बी के साथ ऑरिंग होना चाहिए, नहीं, है ना? – tloflin