सी

2008-09-06 3 views
9

में सरल एन्क्रिप्शन कार्यान्वयन मैंने पहले एक अच्छा सार्वजनिक डोमेन C++ DES implementation का उपयोग किया है, लेकिन अब मुझे एम्बेडेड सिस्टम के लिए कुछ सरल, मूल, तेज़ क्रिप्टोग्राफी की आवश्यकता है।सी

इसे अटूट होने की आवश्यकता नहीं है, लेकिन इसे आकस्मिक हैकर (यानी, कुछ भी नहीं जो पैसे या पहचान की चोरी के लिए इस्तेमाल किया जा सकता है, लेकिन स्मृति कार्ड पर स्थानांतरित की गई अन्य व्यक्तिगत जानकारी जो खो या गिर सकती है गलत हाथों में)।

इस प्रोसेसर पर सीमित स्मृति के कारण, मैं कुछ ऐसा पसंद करूंगा जो अलग-अलग हिस्सों (512 बाइट्स या उससे कम) में एन्कोड कर सके।

परियोजना खुला स्रोत नहीं है, और पुस्तकालयों, जो मैं जानता हूँ कि आगे के विकल्प को प्रतिबंधित करता है का उपयोग नहीं किया जाएगा - सार्वजनिक क्षेत्र सबसे अच्छा जा रहा है, लेकिन बीएसडी/अपाचे/आदि शायद स्वीकार्य ...

मैं संकोच कर रहा हूँ अपना खुद का रोल करने के लिए (जैसा कि सभी होना चाहिए)।

-Adam

उत्तर

7

तुम सिर्फ कहानियो के लिए देख रहे हैं, एक गुप्त निरंतर साथ XOR के रूप में छोटे एक कार्यान्वयन के रूप में आप पाएंगे है। यह तोड़ने के लिए भी छोटा होगा, क्योंकि यह सबसे आम अंग्रेजी अक्षरों को देखने के लिए आवृत्ति विश्लेषण के लिए कमजोर है।

यदि आपको एक मजबूत एल्गोरिदम की आवश्यकता है, तो मैं ब्लाफिश को देखने की अनुशंसा करता हूं जो छोटे और तेज़ हो। इसे अभी भी तालिकाओं के लिए स्मृति की आवश्यकता है, लेकिन उम्मीद है कि यह आपके आवेदन के लिए काम करेगा।

ब्रूस श्नीयर ने स्पष्ट रूप से ब्लॉफिश एल्गोरिदम को सार्वजनिक डोमेन में पेटेंट से वंचित रखा। आप his site से सी (और अन्य कार्यान्वयन भी) में अपना कार्यान्वयन प्राप्त कर सकते हैं। इस स्रोत में कॉपीराइट नोटिस नहीं है। मुझे संदेह है कि स्रोत कोड भी सार्वजनिक डोमेन में है, लेकिन थोड़ा और जांच आवश्यक हो सकती है।

2

एक ही व्यक्ति है कि सी ++ डेस कार्यान्वयन रिलीज़ भी एक C Rijndael Encryption Algorithm जारी - मैं एक काटने अधिक अपनी वेबसाइट के आसपास poked जाना चाहिए था, Tiny Encryption Algorithm (academic paper here) भी एक बहुत छोटी सी कार्यान्वयन पदचिह्न है।

Blowfish अच्छा दिखता है, और संभवतः इन तीनों में से सबसे अच्छी सुरक्षा है।

मैं टीईए (छोटे कोड और मेमोरी पदचिह्न) से शुरू करूंगा लेकिन इसे लपेटूंगा ताकि आवश्यकता होने पर मैं बाद में एक और एल्गोरिदम में जा सकूं। इसके पहले के कार्यान्वयन में इसकी कमजोर कमजोरियां हैं, लेकिन इस परियोजना के लिए भी अधिक हो सकता है।

-Adam

1

आप शब्दों की एक दोहराने योग्य अनुक्रम उत्पन्न करने के लिए Pseudorandom number generator (PRNG) का उपयोग कर सकते हैं, जिसे आप अपने डेटा स्ट्रीम में इसी शब्द के साथ एक्सओआर करते हैं। (ट्रांसमीटर और रिसीवर को पहले से छद्म यादृच्छिक अनुक्रम उत्पन्न करने के लिए उपयोग किए जाने वाले पैरामीटर को जानने की आवश्यकता है।)

यह दृष्टिकोण अटूट नहीं है, लेकिन यह एक्सओआर-आईएनजी और पीआरएनजी के लिए निरंतर उपयोग करने से एक कदम है लागू करने के लिए सरल, आमतौर पर प्रत्येक शब्द के लिए एक गुणा और मॉड्यूलो ऑपरेशन शामिल है।