2016-07-28 35 views
27

.NetCore'da System.Security.Cryptography.RNGCryptoServiceProvider sınıfını bulamıyorum..Net Çekirdeğinde RNGCryptoServiceProvider

Şifreleme için bir başlatma vektörü oluşturmak için kullanılmakta olduğundan, .Net Framework'den bağlantı kurmaya çalıştığım uygulama için çok önemlidir.

Farklı bir adla var mı, yoksa bu işlevselliği elde etmenin başka bir yolu var mı? önerilen çözümlerden

cevap

8
+1

Muhtemelen doğru cevap budur, ancak belirtmeniz gerekir * neden * durum budur. Örneğin. RandomNumberGenerator' kriptografik olarak güvenli rastgele sayıları döndürüyor mu? Ve eğer öyleyse, neden ve nasıl? Sadece bağlantıların cevaplarının genellikle "kaşındığını" unutmayın. –

44

System.Security.Cryptography.RandomNumberGenerator kriptografik-Güvenli Sözde Rastgele Sayı Üreticisi (CSPRNG) uygulamalar için temel sınıftır() RandomNumberGenerator.Create kullanmaktır. .NET Framework RandomNumberGenerator.Create()'da bir RNGCryptoServiceProvider örneği döndürür (CryptoConfig tarafından farklı şekilde yapılandırılmadığı sürece). .NET Çekirdekinde RandomNumberGenerator.Create(), BCryptGenRandom (Windows) veya OpenSSL'nin rasgele sayı üretecini (! Windows) temel alan opak bir tür döndürür.

RandomNumberGenerator.Create(), .NET Core'da bir RNG örneği almanın tek yoludur ve hem .NET Core hem de .NET Framework üzerinde çalıştığı için en taşınabilir olanıdır.

Elbette, bir IV oluşturuyorsanız, CSPRNG'yi dahili olarak kullanmak için SymmetricAlgorithm.GenerateIV() örnek yöntemini de çağırabilirsiniz; belgelerin de belirttiği gibi, rastgele bir IV örneği oluşturulduğunda çağırmak gereksizdir (GenerateIV, CreateEncryptor numaralı çağrıya bir sonraki çağrıdan önce yenisini oluşturmak için kullanılabilir).