3

Data::UUIDのドキュメントには次のように記載されています

UUIDは128ビット長であり、3400CEまでに生成された他のすべてのUUID/GUIDとは異なることが保証されています。

APR :: UUIDのドキュメントには、生成された識別子がランダムとして記述されています。

これは、APR :: UUIDによって作成されたGUIDが一意であることが保証されていないことを意味しますか?

4

2 に答える 2

3

UUIDsGUIDsに関するウィキペディアの記事はここで参考になります。

UUIDはランダムですが、衝突の確率がごくわずかであるほど大きな分布から引き出されます。このコンテキストでは、ごくわずかは、2つの同一のUUIDを生成する前に、何千もの小惑星に襲われる可能性が高いことを意味します。

GUIDはほとんどランダムですが、ネットワークハードウェアのMACアドレスや現在の時刻など、決定論的であるが一意のデータもシステムに組み込まれるため、別のシステムで作成されたGUID間の衝突はさらに起こりにくくなります。

于 2011-12-12T02:44:17.370 に答える
0

これは古い質問だと思いますが、この問題に出くわしたので、いくつかの観察を共有したいと思いました.

daxim が述べたように、APR::UUID は libuuid を使用します。ただし、少なくとも一部の実装では、libuuid はランダム (v4) UUID を生成せず、v1 UUID (MAC アドレスとタイムスタンプに基づく) を生成します。これらは本当に一意ですが (MAC アドレスが実際に一意である限り)、情報 (MAC アドレスと UUID が生成された時間) を漏洩し、少なくともある程度予測可能である可能性があります。

UUID 生成コードが仕様に準拠している場合、3 グループの 1 桁目を見て、生成された UUID のバージョンを確認できます。v1 UUID はランダムではありませんが、予測可能です。v4 UUID はランダムで (おそらく) 予測不可能です。

于 2014-06-26T09:18:18.733 に答える