2015-12-14 19 views
6

मैं एल्लिप्टिक वक्र क्रिप्टोग्राफी की अपनी परियोजना पर काम कर रहा हूं जिसके लिए बाइनरी फ़ील्ड पर प्रोग्रामिंग की आवश्यकता है। इसमें मूल संचालन जैसे अतिरिक्त, गुणा, उलटा आदि शामिल हैं w.r.t. एक irreducible बाइनरी बहुपद।प्रोग्रामिंग भाषा में बाइनरी फ़ील्ड का प्रतिनिधित्व कैसे करें?

मैं ऐसे तरीके की तलाश कर रहा हूं जिसके द्वारा इन बाइनरी बहुपदों को किसी प्रोग्राम में संग्रहीत किया जा सके। मैं सी और सी ++ प्रोग्रामिंग भाषा पर काम कर रहा हूं (जीएम लाइब्रेरी के साथ) तो पहला विचार मेरे दिमाग में आया था संरचनाओं और बिट-फ़ील्ड का उपयोग करना। लेकिन वे गतिशील नहीं हैं और मनमाने ढंग से लंबे बहुपदों को पकड़ नहीं सकते हैं। सी ++ वेक्टर एसटीएल का उपयोग करना संभव है लेकिन यह कुशल नहीं होगा, क्योंकि यह 8 या अधिक बिट्स के एक शब्द में एक बिट को स्टोर करता है।

क्या प्रतिनिधित्व का कोई तरीका है जो कुशल है?

+0

"बाइनरी फ़ील्ड" से आपका मतलब Z_2 है? –

+7

std :: वेक्टर 1 बिट प्रतिनिधित्व – DvoryankinEvgeny

+0

@DvoryankinEvgeny हाँ के लिए 1 बिट मेमोरी का उपयोग करें, लेकिन आप उदा। कुशलतापूर्वक 'xor' दो 'std :: वेक्टर ' s। –

उत्तर

0

किसी सरणी में सूचनाओं को बिटवाइज स्टोर करना प्रभावशाली नहीं है। अगर मैं आप थे तो मैं बिट-इनफॉर्मेशन को एक बड़े असीमित लंबे इंटेगर में संग्रहीत करता हूं और एक ऐसा फ़ंक्शन लिखता हूं जो पूर्णांक मूल्य के इस समूह में बिट्स को प्राप्त और निकाल सकता है। बिट-सूचना संग्रहीत करने का यह तरीका आपके समाधान को 64 गुना तक बढ़ा देगा!

+0

आप सही हैं। लेकिन यह गतिशील नहीं होगा और डेटा आकार को केवल 64 बिट तक सीमित नहीं करेगा। – Gaurav

+1

अंतर्निहित भंडारण के रूप में पूर्णांक की गतिशील सरणी का उपयोग करें। एक्सेस फ़ंक्शन इसे कवर करेगा। 'Realloc() 'का उपयोग करके ऐड/निकालें फ़ंक्शन बढ़ेगा और सरणी को छोटा कर देगा। @ गौरव – alk

+0

@ गौराव - यह मेरी समझ है कि irreducible बाइनरी बहुपद आकार में तय किया गया है, और यह केवल डेटा है जो परिवर्तनीय लंबाई है, और यह मानना ​​सच है, तो ज्यादातर समय आप निश्चित लंबाई चर के साथ काम कर रहे हैं, जो 32 या 64 बिट हस्ताक्षरित पूर्णांक के सरणी हो सकती है। – rcgldr

संबंधित मुद्दे