4

GUIDの作成に何が入るのか疑問に思っています。特定の言語 (SQL Server では NewID()、C# では Guid.NewGuid()) で GUID を作成するために何が使用されるかという意味ではありません。 GUID?

4

6 に答える 6

3

また、RFC 4122 (ウィキペディアの記事で参照されている) では、GUID を構築する方法について説明しています。

于 2008-09-17T20:16:28.123 に答える
2

GUID の生成に使用されるアルゴリズムを含む、GUID の詳細については、wikipediaで説明されています。

于 2008-09-17T20:14:32.060 に答える
1

要するに、それはまったく複雑ではありません。GUID (または UUID) バージョン 4 (現在)部分的に乱数であり、プレーンで単純です (128 ビットのうち 122 ビットはランダムで、残りはバージョンとリビジョンの保存に使用されます)。秘訣は、この数の可能な値が非常に多いため、ヒットの確率がほとんどの実用的な目的ではゼロであるということです。

于 2008-09-17T20:40:46.800 に答える
0

GUIDの作成についてインターネットで読んだ内容の多くが間違っているか、少なくとも特定のプラットフォームでは古くなっている可能性があることに注意してください。

私はかつて、Windowsコードのヒープをシングルステップで実行して、WinXPでのGUIDの作成に関する議論を解決しました。残念ながら、私は間違っていた(つまり、議論を失った)ことが判明しましたが、Larry Ostermanもそうであったので、私はそれについて少し気分が良くなりました。

于 2008-09-17T20:21:58.593 に答える
0

ハッシュ関数。それは複雑です。

http://en.wikipedia.org/wiki/GUID#Algorithm私よりも多くのことを知っています。

于 2008-09-17T20:15:08.283 に答える
0

GUID を生成する公式の方法は 5 つあります (さらに多くの非公式の方法もあります)。

  • バージョン 1 は、通常、GUID の計算に使用されるプライマリ ネットワーク カードの MAC アドレスを使用する時間ベースの GUID です。これはプライバシーの問題から通常は使用されませんが、2005 年以降の Microsoft SQL Server では、これの修正バージョン (バージョン 14 であると主張) を使用して、データベース内の ID に役立つシーケンシャル GUID を作成し、分割を回避していると思います。データ ブロック (NewSequentialId())。

  • バージョン 2 は DCE セキュリティ バージョンです。私はこの種の GUID を見つけたことがありませんが、POSIX をあまり使用したことがなく、バージョン 2 の GUID と POSIX の間に関連があるようです。

  • バージョン 3 は「名前ベース」のバージョンです。つまり、名前空間を指定して、テキストを取得し、その GUID 表現を作成できます。バージョン 3 は MD5 ハッシュ アルゴリズムを使用します。バージョン 5 も参照してください。

  • バージョン 4 は基本的に乱数型の GUID です。乱数は、平均的な乱数ジェネレーターだけでなく、セキュリティレベルのものです。これは、現在世界で通常使用されているバージョンです。Microsoft のドキュメントによると、C# の Guid.NewGuid() はこのバージョンを使用します。また、MS SQL Server で uniqueidentifier を生成する通常の関数 (NewId()) は、バージョン 4 の GUID を生成します。

  • バージョン 5 はバージョン 3 と同じですが、代わりに SHA-3 ハッシュ アルゴリズムを使用します。拡張 GUID C# プロジェクトは、バージョン 5 アルゴリズムを使用します。

GUID 作成の 1 つの実装については、拡張 GUID プロジェクトを参照することをお勧めします。多くの人が指摘しているように、RFC 4122 では、5 つのアルゴリズムすべてがどのように機能するかについて詳細に説明されています。ただし、すべての実装が正しいという保証はありません。

于 2013-08-19T14:56:10.273 に答える