Neden C# sınıf Sistemi.Sistem yerine tüm rastgele.Güvenlik.Kriptografi.RandomNumberGenerator?
Neden birisi kullan "standart" rastgele sayı üreteci System.Random yerine her zaman kullanarak şifreli olarak güvenli rasgele sayı üreteci System.Security.Cryptography.RandomNumberGenerator (veya onun alt sınıflarından çünkü RandomNumberGenerator Özet)?
Nate Lawson anlatıyor bize onun Google Tech Talk sunum "Crypto Strikes Back" dakika 13:11 kullanamazsınız "standart" rastgele sayı üreteci Python, Java ve C# ve yerine kullanın şifreli olarak güvenli sürümü.
Ben rasgele sayı üreteçleri iki sürümü (question 101337) arasındaki farkı biliyor.
Ama ne mantığı her zaman güvenli rasgele sayı kullanmak yok jeneratör var mı? Neden Sistemi kullanın.Sıradan bir at? Performans belki de?
CEVAP
Hızlı ve daha kullanışlı arabirim (NextDouble()
vs.) dışında aynı zamanda sabit bir tohum değeri kullanarak tekrarlanabilir çünkü bir dizi yapmak. Bu oldukça yararlı, Test sırasında diğerleri arasında.
Random gen1 = new Random(); // auto seeded by the clock
Random gen2 = new Random(0); // Next(10) always yields 7,8,7,5,2,....
Neden bu rastgele değer 50/50 yerine 2...
Neden Clojure sadece bir yerine bir sı...
Neden bu kod rastgele dizeleri yazdırm...
Neden nesne yerine bir işaretçi kendis...
Python katılın, neden dize.liste yerin...