2012-11-21 22 views
18

मैं एईएस का उपयोग करते हुए डेटा को एन्क्रिप्ट करने की जरूरत है। शोध करते समय मैंने AesCryptoServiceProvider कक्षा की खोज की।RijndaelManaged बनाम AesCryptoServiceProvider (एईएस एन्क्रिप्शन)

मुझे एन्क्रिप्शन के बारे में बहुत कम पता है और मुझे नहीं पता था कि प्रारंभिक वेक्टर (IV) क्या था, इसलिए मैंने स्टैक ओवरफ़्लो में एईएस उदाहरण की खोज करने की कोशिश की और मुझे this question पर ले जाया गया।

स्टैक ओवरफ़्लो लिंक रिजेंडेल प्रबंधित वर्ग का उपयोग क्यों करता है? क्या RijndaelManaged और AesCryptoServiceProvider कक्षाएं एक ही काम कर रही हैं?

+0

नहीं वे एक ही बात नहीं कर रहे हैं। ([क्यों RijndaelManaged कर रहे हैं और AesCryptoServiceProvider अलग परिणाम लौटने?] की http://stackoverflow.com/a/4863924/328397 – LamonteCristo

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/957388/why-are-rijndaelmanaged-and- देखें aescryptoserviceprovider-returning-different-results) –

उत्तर

25

एईएस क्रिप्ट पर लेकिन ब्लॉक आकार 128 बिट तक ही सीमित के साथ आधारित है। रिजेंडेल ब्लॉक आकारों की एक विस्तृत श्रृंखला का समर्थन करता है और कई क्रिप्टोग्राफिक पुस्तकालय एईएस के पूरक के लिए एक अलग रिजेंडेल कार्यान्वयन की आपूर्ति करते हैं।

128, 160, 1 9 2, 224, और 256 बिट्स के ब्लॉक आकार रिजेंडेल एल्गोरिदम द्वारा समर्थित हैं, लेकिन केवल 128-बिट ब्लॉक आकार एईएस मानक में निर्दिष्ट है। [Wikipedia]

आप RijndaelManaged वर्ग से जुड़ा हुआ। एईएस के बराबर वर्ग AesManaged है।

वर्गों के बीच अंतर के बारे में: AesManaged बस ब्लॉक आकार 128 AesManaged और RijndaelManaged करने के लिए सेट के साथ RijndaelManaged का उपयोग करता FIPS अनुरूप नहीं हैं और जब इस्तेमाल किया है, तो FIPS समूह नीति ध्वज सेट है एक अपवाद फेंक देते हैं। .NET फ्रेमवर्क 4.6.2 (अगस्त 2016) AesCng वर्ग, एईएस एल्गोरिथ्म के CNG संस्करण के एक कार्यान्वयन गयी।

An IV यादृच्छिक डेटा का एक टुकड़ा है, जो ब्लॉक आकार की लंबाई में बराबर है, जिसे ऑपरेशन के कुछ सममित मोड (जैसे सीबीसी-मोड) द्वारा आवश्यक है। आम तौर पर चौथाई सादे टेक्स्ट के पहले ब्लॉक या सिफरटेक्स्ट के पहले ब्लॉक के साथ संयुक्त (एक्सओआर-एड) संयुक्त होता है। विचार यह सुनिश्चित करना है कि एक ही कुंजी के साथ दो बार एक ही संदेश को एन्क्रिप्ट करना उसी आउटपुट में न हो।

+0

धन्यवाद डंकन। हालांकि मैं ब्लॉक आकार निर्दिष्ट कैसे करूं? उदाहरण के लिए आपने उल्लेख किया है कि रिजेंडेल 255 बिट्स जैसे ब्लॉक आकारों की एक विस्तृत श्रृंखला का समर्थन करता है। यह चतुर्थ कुंजी की लंबाई से निर्धारित है? यदि मैं 16 बाइट्स की कुंजी पास करता हूं तो मैं 128 बिट एन्क्रिप्शन का उपयोग करूँगा यदि मैं 32 बाइट्स की चौथी कुंजी पास करता हूं तो मैं 256 बिट एन्क्रिप्शन का उपयोग करूँगा? –

+0

मुझे यकीन नहीं है - मैंने कक्षाओं का उपयोग नहीं किया है। अगर मुझे लगता है कि, यदि आपको IV लंबाई से अनुमानित नहीं किया गया है, तो आपको 'ब्लॉक आकार' संपत्ति को मैन्युअल रूप से सेट करने की आवश्यकता हो सकती है। –

+3

'एस्मानेड' के संबंध में मतभेदों के बारे में आपका अंतिम विवरण बहुत गलत है। 'AesManaged' बस' ब्लॉक आकार 128 'AesManaged' करने के लिए सेट के साथ RijndaelManaged' का उपयोग करता भी FIPS अनुरूप नहीं है और अगर FIPS समूह नीति ध्वज सेट है एक अपवाद फेंक देते हैं। वर्तमान में .NET में एईएस एल्गोरिदम के सीएनजी संस्करण के लिए कोई समर्थन नहीं है। –

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