SecureRandom.uuid vs UUID gem
Gibt es einen Unterschied zwischen ruby ' s SecureRandom.uuid (Ruby 1.9.3) und die UUID gem? Ist die UUID Juwel der "alte" Weg, Dinge zu tun?
Aus der Dokumentation entnehme ich, dass der Edelstein ist mehr "sicher" zu sein, ein echtes Unikat UUID während SecureRandom.uuid ist eher eine zufällige Zeichenfolge, die eine größere chance haben, nicht einzigartig. Zusätzlich UUID scheint zu ermöglichen, dass eine Datei-basierte Persistenz, die Sie dabei unterstützen.
So, ich war in der Hoffnung zu hören, von einigen Menschen mit mehr Einsicht als die, die mich in dieser.
- Die "größere chance" nicht-einzigartig ist hoch nicht wahrscheinlich Streik in der Praxis. Ich denke, dass die UUID gem v1 uuids, und hier ist etwas vage Verwandte (aber keine Antwort): stackoverflow.com/questions/703035/...
- Eigentlich beantwortet die Frage ganz gut. Die ruby version ist v4, während der gem v1. Die Wahrscheinlichkeit, von mir laufen in zwei identische UUIDs mit ruby-Methode ist winzig. Mit v1 ist eigentlich null mein setup (es sei denn, ich generiert 256 exobytes von uuids). "Ehrlich gesagt, in einer einzigen Anwendung Raum ohne böswillige Akteure, die Auslöschung allen Lebens auf der Erde auftreten werden, lange bevor Sie einen Zusammenstoß haben, auch auf eine version 4 UUID, auch wenn Sie die Erzeugung ganz ein paar UUIDs pro Sekunde."
- Auch v1 UUID ' s verlassen sich auf die Eindeutigkeit der MAC-Adressen. In einer stark virtualisierten Welt, Sie werden überrascht sein, dass die Einzigartigkeit der mac-Adresse für einen virtuellen Netzwerkadapter möglicherweise nicht so stark garantiert werden, da die zufällige bits erworben
OpenSSL::Random
- Wie interessant. Danke. Sollte diese Frage geschlossen werden, weil es scheint, mehr von einem Gespräch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Methoden für die Generierung einer UUID.
Wikipedia macht einen guten job der Liste aus.
http://en.wikipedia.org/wiki/Universally_unique_identifier
v4 UUIDs:
Die entscheidende Idee über random, ist, dass ist eigentlich sehr schwer zu erzeugen, wenn in Bezug auf die Verschlüsselung. Die meisten Zufallszahlengeneratoren sind eine mathematische Formel, die brauchen nur zu SCHAUEN, zufällig, und das funktioniert für die meisten Anwendungen. Viele Programme verwenden $pid | Zeit, die zum generieren einer zufälligen seed.
Welche, ist nicht sehr vielversprechend... ich weiß, was die Zeit, die die Anforderung wurde generiert und es sind nur 65,534 pids. Ich kann herausfinden, den random seed zu.
So, wenn Sie den Samen Ihre UUIDv4 number generator an der exakt gleichen Zeit (gleiche Sekunde) mit $pid | time () - über 100 Maschinen mit PID zahlen, dann haben Sie (glaube ich) ein 100/65536 chance auf Vervielfältigung. Dies könnte getan werden, ziemlich leicht, wie dies
SecureRandom:
Beim Lesen von /dev/urandom, es ist sehr zufällig, aber wenn es nicht genug chaos im system, urandom machen Sachen bis zur Versorgung zufälligen Daten. Beim Lesen von /dev/random, es ist SEHR zufällig, und wenn es nicht genug chaos, /dev/random blockiert werden.
UUID:
für die mac-Adresse.
UUID-auch nicht liefern v4 UUIDs 🙂
Praktisch, wenn ich jemals einen md5 oder uuid Kollision, ich bin Kauf eines Lottoschein!