2010-06-16 10 views
15

मेरे पास 10-15 वर्णों की एक स्ट्रिंग है और मैं उस स्ट्रिंग को एन्क्रिप्ट करना चाहता हूं। समस्या यह है कि मैं जितना संभव हो सके एक छोटी सी एन्क्रिप्टेड स्ट्रिंग प्राप्त करना चाहता हूं। मैं उस स्ट्रिंग को अपनी मूल स्ट्रिंग पर वापस डिक्रिप्ट करना भी चाहूंगा।छोटे स्ट्रिंग के लिए कौन सी एन्क्रिप्शन एल्गोरिदम सर्वोत्तम है?

कौन सी एन्क्रिप्शन एल्गोरिदम इस स्थिति के लिए सबसे अच्छा फिट बैठता है?

+2

क्या यह एक आवश्यकता है कि एन्क्रिप्शन "कड़ी" है (इस मामले में मेरा मतलब केवल गैर-तुच्छ है) क्रैक करने के लिए, या यह केवल स्ट्रिंग को छोटा करने के उद्देश्य से है? –

+0

स्ट्रिंग को छोटा करना, और "क्रैक टू हार्ड" बस एक बोनस है –

उत्तर

7

एईएस 16-बाइट ब्लॉक आकार का उपयोग करता है; यदि आपकी 10-15 वर्णों की सीमा दृढ़ है तो यह आपकी आवश्यकताओं के लिए सराहनीय रूप से अनुकूल है। पीकेसीएस # 11 (आईआईआरसी) पैडिंग योजना डेटा में 6-1 बाइट जोड़ती है और सटीक 16 बाइट्स का उत्पादन उत्पन्न करती है। आपको वास्तव में एक एन्क्रिप्शन मोड (जैसे सीबीसी) का उपयोग करने की आवश्यकता नहीं है क्योंकि आप केवल एक ब्लॉक एन्क्रिप्ट कर रहे हैं। इस बात का एक मुद्दा है कि आप चाबियाँ कैसे संभालेंगे - हमेशा एक मुद्दा है कि आप एन्क्रिप्शन कुंजी को कैसे संभालेंगे।

यदि आपको छोटे तारों के लिए छोटी डेटा लंबाई के साथ जाना होगा, तो आपको शायद सीईआर मोड में एईएस पर विचार करने की आवश्यकता है। यह एक बाइट स्ट्रीम उत्पन्न करने के लिए कुंजी और काउंटर का उपयोग करता है जो स्ट्रिंग के बाइट्स के साथ XOR'd है। यह आपके एन्क्रिप्टेड स्ट्रिंग को इनपुट सादे टेक्स्ट स्ट्रिंग के समान लंबाई में छोड़ देगा।

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

5

यदि यह केवल एक छोटी स्ट्रिंग है, तो आप एक बार पैड का उपयोग कर सकते हैं जो गणितीय रूप से पूर्ण गोपनीयता है।

http://en.wikipedia.org/wiki/One-time_pad

बस सुनिश्चित करें कि आप एक समय की तुलना में अधिक कुंजी का उपयोग नहीं करते हो।

1

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

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