2009-08-18 11 views
7

क्या Windows XP पर SHA256CryptoServiceProvider और संबंधित SHA2 प्रदाताओं का उपयोग करना संभव है? मुझे पता है कि प्रदाता क्रिस्टोग्राफी सेवाओं का उपयोग करते हैं जो Vista और ऊपर में शामिल हैं क्या इन सेवाओं को माइक्रोसॉफ्ट से एक्सपी में स्थापित करना संभव है?SHA256CryptoServiceProvider और WinXP पर उपयोग करने के लिए संबंधित संभव?

संपादित करें: मुझे अधिक जानकारी प्रदान की जानी चाहिए कि एमएसडीएन पर दस्तावेज Windows XP में समर्थित होने के संबंध में गलत है। http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355031 देखें जहां इसे माइक्रोसॉफ्ट द्वारा डिज़ाइन के रूप में स्वीकार किया जाता है और स्वीकार किया जाता है। हालांकि कहीं भी सूचीबद्ध कोई काम नहीं है (मैंने देखा) इसलिए मुझे यकीन नहीं था कि सेवाओं को स्थापित करना संभव है, जिसके लिए इसे सही तरीके से काम करने की आवश्यकता है या यदि यह WinXP पर आईआईएस 6 या 7 स्थापित करने की कोशिश कर रहे विंडविल्स पर झुकाव की तरह है।

उत्तर

13

ऐसा लगता है कि MSDN प्रलेखीकरण सही भावना यह है कि डिजाइन द्वारा XP SP3 में समर्थन किया जाना चाहिए में है, और अगर यह नहीं है, यह केवल .NET 3.5 में एक बग के कारण है।

दोनों AesCryptoServiceProvider और SHA256CryptoServiceProvider "माइक्रोसॉफ्ट एन्हांस्ड आरएसए और एईएस क्रिप्टोग्राफिक प्रदाता" नामक एक ही क्रिप्टोग्राहिक्स सेवा का उपयोग करते हैं। XP के तहत, सेवा का नाम थोड़ा अलग है: "माइक्रोसॉफ्ट एन्हांस्ड आरएसए और एईएस क्रिप्टोग्राफिक प्रदाता (प्रोटोटाइप)"। AesCryptoServiceProvider के निर्माता एक सरल जांच करता है:

string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider"; 
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1) 
{ 
    providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; 
} 

SHAxxxCryptoServiceProvider वर्गों के कंस्ट्रक्टर्स नहीं चेक (प्रोटोटाइप) नाम करते हैं, और यही कारण है कि वे XP में असफल। अगर उन्होंने किया, तो वे सफल होंगे।

किसी दिए गए पीसी पर एक साधारण कामकाज है। रजिस्ट्री कुंजी पर जाएं HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ Microsoft \ Cryptography \ Defaults \ Provider, "माइक्रोसॉफ्ट एन्हांस्ड आरएसए और एईएस क्रिप्टोग्राफिक प्रदाता (प्रोटोटाइप)" नामक उपकुंजी ढूंढें, इसे .reg को निर्यात करें, इस .reg को संपादित करें और हटाएं "(प्रोटोटाइप) "इसके नाम से। जब आप इसे वापस आयात करते हैं, तो मूल कुंजी को उसी सामग्री के साथ (प्रोटोटाइप) के बिना नई कुंजी पर डुप्लिकेट किया जाएगा। अब से, SHA256CryptoServiceProvider इस XPSP3 मशीन पर काम करेगा।

0

MSDN से: SHA256CryptoServiceProvider कक्षा

प्लेटफार्म: विंडोज विस्टा, विंडोज XP SP2, Windows Server 2003

+0

एमएसडीएन इस पर गलत है। –

2

मैं निम्नलिखित स्निपेट के साथ सफलता मिली है, हालांकि मैं वास्तव में इससे संतुष्ट नहीं कर रहा हूँ और लगभग उस समय SHA512 को तत्काल करने के लिए विभिन्न प्रतीत होता है खतरनाक तरीकों से संबंधित एक SO प्रश्न पोस्ट किया। यह विंडोज एक्सपी, 7, और संभवतः Vista (परीक्षण नहीं कर सकता) पर परीक्षण किया जाता है।

using System.Security.Cryptography; 

     SHA512 hash; 
     try 
     { 
      hash = new SHA512Cng(); 
     } 
     catch (PlatformNotSupportedException) 
     { 
      hash = SHA512.Create(); 
     } 

मुझे लगता है कि यह SHA256 के साथ काम करना चाहिए।

इसके अलावा, यूनिक्स sha2 उपयोगिता के साथ दोनों संस्करणों के आउटपुट की तुलना करने का सुझाव दिया गया है कि वे दोनों SHA512 को सही ढंग से कार्यान्वित करते हैं।

+0

क्यों हमेशा SHA512 का उपयोग न करें। बनाएं()? –

+1

समस्या क्रिप्टोग्राफ़ी सेवा है कि SHA256/SHA512 Win XP में शामिल नहीं है जो Win XP पर कॉल किया गया है, तो PlatformNotSupportedException को बढ़ाता है, इसलिए मैं पूछ रहा था कि Win XP पर इसे स्थापित करना संभव था या यदि यह असंभव है जिस तरह से XP पर आईआईएस 6 या 7 में अपग्रेड करना असंभव है। –

+0

@Rasmus Faber: हाँ, मैं हमेशा SHA512 का उपयोग कर सकता हूं। क्रिएट(), लेकिन मुझे Vista या 7 पर नए (और माना जाता है कि बेहतर) कार्यान्वयन से लाभ नहीं होगा। इसके अलावा, मुझे मूल रूप से समस्या की खोज हुई जब मेरी विकास मशीन से तैनाती हुई (जीत 7) एक विन XP बॉक्स में। –

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