Ist dieses Token erwartungsgemäß oder wirklich zufällig?
Das ist die falsche Frage zu stellen.
Mike Zs Kommentar ist korrekt. Guids sind garantiert einzigartig, nicht zufällig. Es gibt verschiedene Guid-Generation-Techniken, und einige von ihnen sind zufälliger als andere. Insbesondere kann ein GUID-Generator sequentielle GUIDs erzeugen. Die meisten nicht, aber Wenn Sie eine Guid für etwas anderes als Einzigartigkeit verwenden, verwenden Sie es Off-Label. Ich mag es nicht irgendetwas Off-Label zu tun, wenn die Sicherheit auf der Linie ist.
Insbesondere haben wir keinen Beweis dafür, dass ein Sicherheitsexperte den Code entweder im GUID-Generator oder im Hash-Generator überprüft hat, um sicherzustellen, dass er über ausreichende Entropie verfügt, um einen Angreifer zu besiegen. Sie sollten Ihre Sicherheit auf Tools basieren, die von Experten überprüft wurden.
Während wir dabei sind: Der Code selbst ist bizarr. Es nimmt an, dass der Hash einer GUID eine ausreichende Entropie hat, um einen Zufallszahlengenerator zu erzeugen, und dann generieren Sie aus diesem RNG eine einzelne 5-stellige Dezimalzahl. Durch Annahme haben Sie bereits eine 32-Bit-Zufallszahl in der Hand; Warum nimmst du es nicht als Zufallszahl, wenn es bereits eine Quelle der Zufälligkeit ist, die gut genug ist, um ein Samen zu sein? Sie haben einen zufälligen Startwert, der mehr als groß genug ist, um die von Ihnen gesuchte Zufallszahl zu sein! Feeding es in Random wird es nicht machen mehr zufällig.
Das gesagt, Sie sollten es überhaupt nicht verwenden.
Die richtige Frage ist:
Was ist der richtige Weg ist, eine Zufallszahl für einen Sicherheitszweck zu generieren?
Verwenden Sie einen Crypto-Stärke-Zufallsgenerator, dessen On-Label-Verwendung genau das ist. In der .NET-Laufzeitbibliothek ist eine verfügbar. benutze es!
Weiterführende Literatur:
https://blogs.msdn.microsoft.com/ericlippert/tag/guids/
Teil 3 ist insbesondere relevant für Ihre Frage.
warum nicht nur 'Guid.NewGuid()'? – Rahul
Wer sagt, Guid's * garantiert * zufällig zu sein? Guids sind Quelle der Einzigartigkeit, nicht Zufälligkeit. Verwenden Sie eine geeignete Zufallsquelle für etwas, das zufällig sein sollte. –
Weil eine Zahl zwischen 1 und 10.000 gut genug ist; könnte es auch zwischen 1 und 100K oder einer Million machen. – frenchie