2009-11-03 11 views

cevap

85
using System.Security.Cryptography; 
... 
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider()) 
{ 
    byte[] tokenData = new byte[32]; 
    rng.GetBytes(tokenData); 

    string token = Convert.ToBase64String(tokenData); 
} 
+28

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

+1

Bu özellikle kriptografi değil, tho. Ve makinenin başlangıç ​​durumunu tahmin etmek zor olurdu. –

+10

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

3

...

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.

+1

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

+9

@CodesInChaos: So; hızlı, güvenli, basit - herhangi birini iki seçin. :) – Guffa

İlgili konular