सी

2012-03-24 3 views
8

में 80 बिट्स डेटाटाइप को मैनिपुलेट करना मैं सी में कुछ क्रिप्टोग्राफिक एल्गोरिदम लागू कर रहा हूं जिसमें 80 बिट्स कुंजी शामिल है। एक विशेष ऑपरेशन में बिट्स की कुंजी एक्स संख्या को स्थानांतरित करने के लिए घूर्णन शामिल होता है।सी

मैंने लंबे डबल प्रकार की कोशिश की है जो कि यदि मैं गलत नहीं हूं तो 80 बिट्स है, लेकिन यह बिट्सफ़्ट ऑपरेटर के साथ काम नहीं करता है।

एकमात्र विकल्प जिसके साथ मैं आ सकता हूं, कुछ जटिल लूपिंग और यदि-अन्य के साथ 10 तत्व चार सरणी का उपयोग करना है।

मेरा सवाल यह है कि क्या इसे बाहर निकालने का कुछ सरल और कुशल तरीका है।

धन्यवाद।

+0

क्या यह पीसी 1 एल्गोरिदम है? मेरी समझ यह है कि 80 बिट संस्करण मोटोरोला 680 9 जैसे अन्य (x86 नहीं) आर्किटेक्चर पर उपयोग किया जाता है? क्या आप एक मंच दे सकते हैं? – Mikhail

+2

बस चार की एक सरणी का उपयोग करें और अपनी खुद की शिफ्ट/घुमाने को कार्यान्वित करें - उदाहरण के लिए यहां देखें: http://stackoverflow.com/questions/3918229/how-to-circular-shift-an-array-of-4-chars –

+0

हाय, नहीं, यह वर्तमान ब्लॉक साइफर एल्गोरिदम है। http://homes.esat.kuleuven.be/~abogdano/papers/present_ches07.pdf मैं इसे xilinx microblaze fpga बोर्ड पर सी में लागू करने की कोशिश कर रहा हूं। – gamerx

उत्तर

4

अफसोस की बात है कि आपको एक बिग्नम लाइब्रेरी चाहिए। जबकि सी देशी डेटा प्रकारों में 80 बिट फ्लोट्स के लिए समर्थन है, वस्तुतः यह वही नहीं करता जो आप चाहते हैं।

GMP जैसे कुछ लिंक करना संभव है या यहां तक ​​कि 10 वर्ण सरणी या दो संख्याओं को एक लंबा और छोटा (64 बिट और 16 बिट पूर्णांक) जैसे कम वांछनीय दृष्टिकोणों का उपयोग करना संभव है।

न तो विशेष रूप से सुंदर है लेकिन वे काम करते हैं और यदि आप किसी भी वर्ग के लिए इसका उपयोग करने की योजना बना रहे हैं, तो GMP जाने का तरीका है। अन्यथा आप समय के हमलों की पूरी गड़बड़ी कर सकते हैं जिसे आप चारों ओर कोड कर सकते हैं लेकिन यह वास्तव में बुरा, असली जल्दी हो सकता है।

+0

यह वर्तमान ब्लॉक सिफर एल्गोरिदम है। homes.esat.kuleuven.be/~abogdano/papers/present_ches07।पीडीएफ मैं इसे xilinx microblaze fpga बोर्ड पर सी में लागू करने की कोशिश कर रहा हूं। – gamerx

+0

क्या आप अल्ट्रा कुशल या सिर्फ काफी लक्ष्य चाहते हैं? – Ben

+0

उचित दक्षता भी मुझे लगता है। – gamerx

4

यहां कुछ गड़बड़ है। अगर मैं आपको सही ढंग से समझता हूं, तो आप एफपीजीए पर "सॉफ्ट" सीपीयू का उपयोग कर रहे हैं।

  1. परंपरागत रूप से, लोगों VHDL/Verilog के माध्यम से अपने स्वयं पारी रजिस्टरों बनाने के लिए FPGA का उपयोग। इस तरह के एल्गोरिदम लागू करने और बहुत तेज़ करने के लिए काफी दर्द रहित हैं। विश्वविद्यालय में वापस मैंने यह एक क्रिप्टोग्राफी परियोजना के लिए किया था।

  2. इसके अलावा, आपके द्वारा वर्णित पेपर 128 बिट कुंजी के बारे में बात करता है। इसे लागू करना काफी आसान होगा?

+0

पेपर ने यह भी बताया कि एल्गोरिदम 80 बिट्स और 128 बिट्स कुंजी दोनों के लिए काम करता है। पूर्व हल्का संस्करण है जिसे मैं यहां लागू करने का प्रयास कर रहा हूं। – gamerx

+0

यह एक अच्छा मुद्दा है: यदि आप एक एफपीजीए का उपयोग कर रहे हैं, तो आप इसे नरम CPU पर चलाने के बजाय, एल्गोरिदम का निर्माण कर सकते हैं। –