Kimlik doğrulama jetonları için C# 3.0 (.NET Framework 3.5) için cryptographically secure pseudorandom number generator (CSPRNG) hızlı uygulaması var mı?C# kriptografik olarak güvenli bir sözde sayı üretebilir miyim?
cevap
using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
byte[] tokenData = new byte[32];
rng.GetBytes(tokenData);
string token = Convert.ToBase64String(tokenData);
}
hızlı derken ne olduğuna bağlıdır RNGCryptoServiceProvider sınıf
...
hayır gerçekten hızlı rasgele jeneratör güvenli yoktur. Eğer hızlı istersen, normal Rastgele sınıfını kullanmalısın. Güvenli olmak isterseniz, Kriptografi ad alanında rastgele üreteci kullanmalısınız, ancak bu önemli ölçüde daha yavaştır. Sadece ikisine sahip olamazsın.
Yerel bir kripto uygulamasıyla ortak çalışma yapmak istiyorsanız, hem mükemmel performansa (System.Random'dan birkaç kat daha hızlı) hem de güvenliğe sahip olabilirsiniz. – CodesInChaos
@CodesInChaos: So; hızlı, güvenli, basit - herhangi birini iki seçin. :) – Guffa
WinAPI GUID oluşturucusunun kriptanalizinde, V4 GUID'leri dizisi rasgele olarak rastlandığından, ilk duruma göre, UuidCreate işlevi tarafından döndürülen bir sonraki 250 000 GUID değerini tahmin edebilir. Bu nedenle GUID'ler, örneğin rasgele anahtarlar gibi kriptografide kullanılmamalıdır. (http://en.wikipedia.org/wiki/Globally_Unique_Identifier) – configurator
Bu özellikle kriptografi değil, tho. Ve makinenin başlangıç durumunu tahmin etmek zor olurdu. –
Genel bir saldırı, yeniden başlatılıncaya kadar DDoS sunucusuna bağlanmaktır. Daha sonra başlangıç durumunu (sistem saati) tahmin etmek çok daha kolay. – LaJmOn