Ich frage mich, was in die Erstellung einer GUID eingeht. Ich meine nicht, was verwendet wird, um eine GUID in einer bestimmten Sprache zu erstellen (NewID() in SQL Server, Guid.NewGuid() in C#), ich meine, wenn Sie diese Methoden/Funktionen aufrufen, was machen sie zu machen GUID?GUID Hinter den Kulissen
Antwort
Die Details der GUIDs, einschließlich des Algorithmus, der zu ihrer Generierung verwendet wird, sind unter wikipedia beschrieben.
Hash-Funktion. Es ist kompliziert.
http://en.wikipedia.org/wiki/GUID#Algorithm Weiß mehr als ich.
Auch RFC 4122 (auf die im Wikipedia-Artikel verwiesen wird) beschreibt, wie GUIDs erstellt werden sollten.
Ein Wort der Warnung, dass ein sehr großer Teil dessen, was Sie im Internet über die GUID-Erstellung lesen, möglicherweise falsch oder zumindest veraltet für Ihre spezifische Plattform ist.
Ich habe einmal durch einen Haufen Windows-Code, um ein Argument über die GUID-Erstellung auf WinXP zu lösen. Leider stellte sich heraus, dass ich falsch lag (d. H. Ich verlor das Argument), aber auch Larry Osterman, also fühlte ich mich etwas besser.
Kurz gesagt, es ist überhaupt nicht kompliziert. (oder UUID) Version 4 (aktuell) ist eine teilweise Zufallszahl, schlicht und einfach (122 von 128 Bits sind zufällig, der Rest wird zum Speichern von Version und Revision verwendet). Der Trick ist, dass die möglichen Werte dieser Anzahl sind so viele, dass die Wahrscheinlichkeit eines Treffers für die meisten praktischen Zwecke Null ist.
Ich würde sagen, dass es sich um eine teilweise Zufallszahl handelt. Einige Teile davon sind überhaupt nicht zufällig. – EBGreen
Einige der Bits werden aus den Maschineninformationen erstellt und ändern sich nicht so lange wie Sie auf demselben Computer sind. –
Es gibt fünf offizielle Möglichkeiten, um GUIDs (und sicherlich viele inoffizielle) zu generieren.
Version 1 ist eine zeitbasierte GUID, die normalerweise MAC-Adressen der primären Netzwerkkarte verwendet, die zum Berechnen der GUID verwendet wird. Dies wird normalerweise aufgrund von Datenschutzproblemen nicht verwendet, aber ich glaube, dass Microsoft SQL Server ab 2005 eine modifizierte Version dieser Version verwenden (mit der Behauptung, Version 14 zu sein), um sequentielle GUIDs zu erstellen, die für IDs in einer Datenbank nützlich sind Datenblöcke (NewSequentialId()).
Version 2 ist DCE Security-Version. Ich habe nie diese Art von GUID gefunden, aber ich habe auch nicht viel mit POSIX gearbeitet und es scheint eine Verbindung zwischen Version 2 GUIDs und POSIX zu geben.
Version 3 ist eine "namenbasierte" Version, was bedeutet, dass Sie einen Text aufnehmen und eine GUID-Darstellung für einen Namespace erstellen können. Version 3 verwendet einen MD5-Hashalgorithmus. Siehe auch Version 5.
Version 4 ist im Grunde eine Zufallszahl GUID. Die Zufallszahl ist vom Sequrity-Level, nicht nur von Ihrem durchschnittlichen Zufallszahlengenerator. Dies ist die Version, die normalerweise in der heutigen Welt verwendet wird. Die C# Guid.NewGuid() verwendet diese Version laut Microsoft-Dokumentation. Auch die normale Funktion zum Erzeugen eines eindeutigen Identifikators in MS SQL Server (NewId()) erzeugt eine GUID der Version 4.
Version 5 ist wie Version 3, verwendet aber stattdessen einen SHA-3 Hashing-Algorithmus. Die extended guid C# project verwendet den Version 5-Algorithmus.
Für eine Implementierung von GUID-Erstellung würde ich empfehlen, das erweiterte GUID-Projekt zu betrachten. Wie viele gezeigt haben, gibt die RFC 4122 eine detaillierte Beschreibung, wie alle fünf Algorithmen funktionieren. Es gibt jedoch keine Garantie, dass alle Implementierungen korrekt sind.
- 1. Updatedatenbank und Website hinter den Kulissen
- 2. Wie funktionieren Verschlüsse hinter den Kulissen? (C#)
- 3. Wie arbeiten Indizes hinter den Kulissen
- 4. Was sind Erlang Prozesse hinter den Kulissen?
- 5. Hinter den Kulissen: Kerndaten Daten mit 31-Jahres-Offset gespeichert?
- 6. Was passiert hinter den Kulissen, wenn Sie super() verwenden
- 7. RabbitMQ Clustering und Mirror Queues Verhalten hinter den Kulissen
- 8. Wie funktioniert Boost Bind im Allgemeinen hinter den Kulissen?
- 9. Wie funktioniert HtmlHelper.AnonymousObjectToHtmlAttributes hinter den Kulissen? (Methode nennt sich selbst)
- 10. Wie funktioniert die Reaktivität von Meteor hinter den Kulissen?
- 11. Gute Erklärung, wie Schienen hinter den Kulissen funktionieren?
- 12. Wie funktionieren Ausnahmen (hinter den Kulissen) in C#
- 13. einfache Verwendung von .prototype, was passiert hinter den Kulissen?
- 14. Was passiert hinter den Kulissen, wenn Sie aspnet_regsql ausführen?
- 15. Wie funktioniert HashSet1.retainAll (HashSet2); Hinter den Kulissen arbeiten?
- 16. Wie funktioniert die Mustererkennung hinter den Kulissen in F #?
- 17. Kann jemand erklären, was hinter den Kulissen passiert?
- 18. Gibt es eine Möglichkeit, git flow zu zeigen, welche Befehle hinter den Kulissen ausgeführt werden?
- 19. Rails postet seine Syntax laut, wenn es hinter den Kulissen laufen sollte?
- 20. Was passiert hinter den Kulissen (Heap, Stack, etc ..) beim Hinzufügen eines Knotens zu einer LinkedList?
- 21. In Eclipse 3.5: Rewrite xsl Import/include Lage hinter den Kulissen, damit es richtig Dateien validieren
- 22. Hinter den Kulissen von Visual Basic-Casting - Konvertierung von String zu Typ "Double" ist nicht gültig
- 23. Hinter den Kulissen, was passiert mit Dezimalwert in C# /. NET eingeben?
- 24. Was passiert hinter den Kulissen, wenn ich ein neues UIImage durch Zuweisung erstelle?
- 25. JavaScript: Übergeben von Daten an ein domainübergreifendes Popup hinter den Kulissen
- 26. Wäre es für einen JIT-Compiler möglich, GPU für bestimmte Vorgänge hinter den Kulissen zu verwenden?
- 27. In Eclipse für Java -JDT (DynWeb) verwendet Eclipse die Standard-Datei ant build.xml? hinter den Kulissen?
- 28. Wie Parameter in silverlight übergeben werden, so dass es "hinter den Kulissen" ist
- 29. Datepicker-Format: Wie bekomme ich ein anderes Format hinter die Kulissen?
- 30. Hinzufügen von? Nocache = 1 zu jeder URL (einschließlich der Assets wie Stylesheet) hinter den Kulissen mit Mod-Rewrite
Suchst du etwas mehr als [Wikipedia] (http://en.wikipedia.org/wiki/Globally_Unique_Identifier)? – Karg