Nur meine zwei Cent, aber das ist vielleicht keine gute Idee. Um die exzellente Reihe von Eric Lippert über GUIDs ( Teil 1 , Teil 2 , Teil 3 ) zu paraphrasieren , lautet das Akronym GUID, nicht GSUID - Global Unique Identifier, nicht Global Secure Unique Identifier.
Das Problem liegt darin, dass bei der Generierung von GUIDs in einem nicht feindlichen Bereich, wie z. B. jedem, der NEWID () verwendet, garantiert wird, dass alle Werte eindeutig sind (siehe Eric's Artikel, Teil 3). Wenn eine feindliche Entität in diesen Bereich eintritt, kann sie sowohl die nächste generierte GUID vorhersagen als auch selbst Kollisionen verursachen.
Indem Sie Ihre eigene Methode zum Generieren eines Werts erstellen, den Sie in einer Struktur speichern, die wie eine GUID aussieht, sind Sie im Wesentlichen zu einer feindlichen Entität geworden. Sie haben den Vertrag einer GUID von eindeutig in zufällig geändert . Während jemand, der besser in Mathe ist als ich, wahrscheinlich beweisen kann, dass Sie immer noch einzigartig sind, liegt dies nur innerhalb der Grenzen Ihrer Erzeugungsmethode. Wenn Sie diese Pseudo-GUIDs mit NEWID () GUIDs mischen, sind alle Wetten deaktiviert.
Ich sage, dies ist möglicherweise keine gute Idee, nur weil ich nicht den gesamten Umfang Ihrer Verwendung der Werte kenne. Wenn Sie die einzige Entität sind, die die Werte generiert (kein Mix and Match), und / oder wenn Sie die Werte nicht beibehalten und / oder sich nicht für Kollisionen interessieren, ist dies möglicherweise kein Problem. Wenn eines dieser Elemente nicht zutrifft, sollten Sie es möglicherweise neu bewerten.
4
. Aber die Tatsache, dass ich keine eindeutigen Beweise dafür habe, dass sie erraten werden können, bedeutet nicht, dass sie es nicht sind. Ich kann diese Sicherheitsentscheidung nicht auf diese Beobachtung stützen.