2009-08-18 41 views
7

Windows XP'de SHA256CryptoServiceProvider ve ilgili SHA2 sağlayıcılarını kullanmak mümkün müdür? Sağlayıcıların Vista'da bulunan şifreleme hizmetlerini kullandığını biliyorum ve bu hizmetleri Microsoft'tan Microsoft'a yüklemek mümkün mü?SHA256CryptoServiceProvider ve WinXP'de kullanmak mümkün mü?

DÜZENLEME: Daha fazla bilgi vermeliydim, Windows XP'de desteklenmekte olan MSDN ile ilgili yanlış belgelere sahip olmamalıdır. Bunun tasarım tarafından Microsoft tarafından kabul edildiği ve kabul edildiği http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355031'a bakın. Ancak, herhangi bir yerde (görmediğim) herhangi bir iş yoktur, bu yüzden düzgün çalışmayı gerektiren servislerin yüklenip yüklenemeyeceğinden emin değildim ya da WinXP'de IIS 6 ya da 7'yi yüklemeye çalışan rüzgar şelaleleri gibi eğiliyorsa.

MSDN

cevap

13

MSDN belgelerine sağ tasarımıyla XP SP3, desteklenmelidir bunun anlamda olduğu görülmektedir ve bu değilse, sadece çünkü .NET 3.5 bir hata yüzünden.

Hem AesCryptoServiceProvider hem de SHA256CryptoServiceProvider, "Microsoft Enhanced RSA ve AES Şifreleme Sağlayıcısı" adlı aynı şifreleme hizmetini kullanır. XP altında, hizmetin adı biraz farklıdır: "Microsoft Enhanced RSA ve AES Şifreleme Sağlayıcısı (Prototip)". AesCryptoServiceProvider yapıcısı basit bir kontrol gerçekleştirir: SHAxxxCryptoServiceProvider sınıfların

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)"; 
} 

kurucular değil çek (Prototip) adı yapmaz ve XP'de başarısız nedeni budur. Eğer yaparlarsa başarılı olurlar.

Belirli bir bilgisayarda basit bir çözüm var. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider kayıt defteri anahtarına gidin, "Microsoft Enhanced RSA ve AES Şifreleme Sağlayıcısı (Prototype)" adlı alt anahtarını bulun, .reg dosyasına verin, bunu düzenleyin .reg ve delete "(Prototype) "adından. Geri aldığınızda, orijinal anahtar aynı içeriğe sahip (Prototip) olmadan yeni anahtara kopyalanır. Şu andan itibaren, bu XPSP3 makinesinde SHA256CryptoServiceProvider çalışacaktır.

0

: SHA256CryptoServiceProvider Sınıf

Platformlar: Windows Vista, Windows XP SP2, Windows Server onunla gerçekten memnun değilim rağmen, aşağıdaki parçada ile başarı elde ettik 2003

+0

MSDN bu konuda yanlış. –

2

ve neredeyse SHA512'u anında ortaya çıkarmak için çeşitli görünüşte gelişigüzel yollarla ilgili bir SO sorusu yayınladı. Bu, Windows XP, 7 ve muhtemelen Vista'da (hatırlayamıyor) test edildi.

using System.Security.Cryptography; 

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

Bu SHA256 ile aynı çalışması gerektiğini düşünüyorum. Ayrıca, her iki sürümün çıktısının bir unix sha2 yardımcı programıyla karşılaştırılması, SHA512'nin her ikisini de doğru bir şekilde uyguladıklarını önermiştir.

+0

Neden sadece SHA512.Create() kullanılmıyor? –

+1

Sorun, Win XP'de çağrılırsa, WinX'te SHA256/SHA512'nin bulunmadığı şifreleme hizmetidir. Bu, Win XP'ye çağrılırsa, PlatformNotSupportedException'ı yükseltir. Bu nedenle, Win XP'ye yüklenmesinin mümkün olup olmadığını mı soruyordum yoksa yalnızca XP'de IIS 6 veya 7'ye yükseltmek imkansız. –

+0

@Rasmus Faber: Evet, her zaman SHA512.Create() kullanabilirim, ancak Vista veya 7'deki daha yeni (ve sözde daha iyi) uygulamalardan faydalanamam. Ayrıca, geliştirme makinemden dağıtım yaparken sorunu ilk olarak fark ettim Win XP kutusuna (7 kazan). –

İlgili konular