2010-08-24 12 views
26

.NET SHA256Managed कक्षा सभी ढांचे संस्करणों में समर्थित है जबकि SHA256CryptoServiceProvider कक्षा केवल फ्रेमवर्क 3.5 और ऊपर से समर्थित है।SHA256CryptoServiceProvider और SHA256 प्रबंधित

SHA256CryptoServiceProvider क्यों पेश किया गया है? ऐसा लगता है कि SHA256Managed वर्ग जैसा ही है, लेकिन बाद वाला बेहतर प्रदर्शन करता है।

मैं क्या याद आ रही है और मैं क्यों SHA256CryptoServiceProvider इस्तेमाल करना चाहिए?

उत्तर

51

यह कुछ भी नहीं है प्रदर्शन के साथ क्या करना है - SHA256CryptoServiceProvider जबकि SHA256Managed नहीं है FIPS 140-2 मान्य (FIPS = संघीय सूचना संसाधन मानक) क्रिप्टो सेवा प्रदाता (CSP) का उपयोग करता है। SHA256Managed एक शुद्ध प्रबंधित कार्यान्वयन है जबकि SHA256CryptoServiceProvider संभावित रूप से वही बात करता है लेकिन क्रिप्टोएपीआई को लपेटता है।

यह आपको अमेरिका की संघीय या राज्य सरकार कई सिस्टम पर संचालित करने के लिए के रूप में यह सॉफ्टवेयर विक्रेताओं के लिए एक आवश्यकता है जा रहे हैं बड़ा असर पड़ता है। एनआईएसटी की नजर में, SHA256Managed कार्यान्वयन जैसे गैर-FIPS मान्य क्रिप्टोग्राफिक मॉड्यूल का उपयोग करके, किसी भी एन्क्रिप्शन का उपयोग न करने से अलग नहीं है।

आप FIPS मान्यता के बारे में परवाह नहीं है, तो SHA256Managed ठीक है।

सब कुछ है कि सीएनजी में समाप्त होता है "Crytographic एपीआई: अगली पीढ़ी" के लिए खड़ा है जो नए प्रोटोकॉल है कि अमेरिकी सरकार कॉल सुइट बी क्रिप्टोग्राफिक एल्गोरिथम को संदर्भित करता है, लेकिन नेट ढांचा संस्करण की परवाह किए बिना वहाँ कोई समर्थन Vista/सर्वर से पहले है 2008)।

तो एल्गोरिदम और कार्यान्वयन का उपयोग करें जो आप की रक्षा कर रहे हैं के लिए उपयुक्त है। आप सीमित होंगे जिसमें नेट फ्रेमवर्क संस्करण आप उपयोग कर रहे हैं, कौन सा ऑपरेटिंग सिस्टम आपका कोड चलता है, और क्या आपको FIPS 140-2/140-3 (2011 में आने) मान्य मॉड्यूल का उपयोग करने की आवश्यकता है या नहीं । यदि आपके पास आवश्यक संयोजन के लिए समर्थित नेट फ्रेमवर्क क्लास नहीं है, तो तीसरे पक्ष के मॉड्यूल उपलब्ध हैं, और यदि आप आवश्यक हो तो अप्रबंधित सीएपीआई को भी छोड़ सकते हैं और उपयोग कर सकते हैं।

आप अनिद्रा है, तो आप http://csrc.nist.gov/groups/STM/cmvp/standards.html#02

+5

ग्रेट स्पष्टीकरण, साथ ही अनिद्रा के लिए एक इलाज। आपको मेरा वोट मिला – smg

+0

SHA256CryptoServiceProvider के उचित उपयोग के संबंध में संबंधित पोस्ट भी देखें: http://stackoverflow.com/questions/21326598/sha256cryptoserviceprovider-not-fips-compliant/39735317#39735317 –

1

दोनों एक ही हैश उत्पन्न करेंगे। केवल अंतर यह है कि SHA256Managed हैशिंग का एक प्रबंधित कार्यान्वयन है।

यह भी ध्यान दें कि SHA256CryptoServiceProvider ऑपरेटिंग सिस्टम क्रिप्टोग्राफिक सेवा प्रदाताओं का उपयोग करता है और यहां तक ​​कि यदि आपके पास .NET 3.5 स्थापित है, तो इसे काम करने के लिए SP3, 7, या 2008 के साथ Windows XP की आवश्यकता होगी।

फायदे के लिए, SHA256CryptoServiceProvider का उपयोग करके आपको SHA256Managed से बेहतर प्रदर्शन करना होगा।

+0

आपकी व्याख्या के लिए धन्यवाद। एमएसडीएन पर यह जानकारी नहीं मिल सका। यहां तक ​​कि एक SHA256Cng कक्षा भी है। यह बहुत अस्पष्ट है कि कुछ परिस्थितियों में उपयोग करना है। –

+1

स्कॉटबाई अपने जवाब में प्रदर्शन के विपरीत बताते हैं। –

+0

SHA256 प्रबंधित SHA256CryptoServiceProvider से बहुत तेज है। –

4

पर एक इलाज है कि मैं इस बारे में कुछ जानकारी जोड़ने के लिए के बाद से मैं सिर्फ एक समस्या यह है कि मुझे सीएसपी संस्करण का उपयोग करने के लिए स्विच करने के लिए आवश्यक में भाग चाहता था पा सकते हैं। क्षमा करें, मैं एक टिप्पणी नहीं जोड़ सकता (प्रतिनिधि बहुत कम)।

परीक्षण यह आप HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet की स्थापना \ Control \ Lsa \ FipsAlgorithmPolicy द्वारा जल्दी से FIPS सक्षम कर सकते हैं के लिए \ 1. करने के लिए सक्षम तब दृश्य स्टूडियो बूट और एक परियोजना SHA256Managed का उपयोग करता है के निर्माण के लिए प्रयास करें। आपको त्रुटियां मिलेंगी कि "यह कार्यान्वयन विंडोज प्लेटफ़ॉर्म FIPS मान्य क्रिप्टोग्राफ़िक एल्गोरिदम का हिस्सा नहीं है"। वास्तव में, आप इसे किसी भी * प्रबंधित क्रिप्टोग्राफी एल्गोरिदम के लिए प्राप्त करेंगे।

अब SHA256ManagedSHA256CryptoServiceProvider के साथ स्वैप करें और पुनर्निर्माण करें। Poof, त्रुटियों दूर जाओ!

नोट: यदि आपने कोई प्रोग्राम तैनात किया है और कोई ग्राहक FIPS सक्षम करता है तो यह ऊपर दिए गए त्रुटि संदेश के साथ InvalidOperationException फेंक देगा।

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