メインコンテンツまでスキップ

5.3. UUID Version 3

5.3. UUID Version 3

UUIDv3 は、セクション 6.5 に従って、いくつかの名前空間から引き出され、その名前空間内で一意である名前から UUID を生成するためのものです。

UUIDv3 値は、指定された名前空間 ID 値 (セクション 6.6) と希望する名前値を連結したものに対して MD5 ハッシュ [RFC1321] を計算することによって作成されます。両方がその名前空間の標準または規則によって定義された正規のオクテットシーケンスに変換され、ネットワークバイト順で表されます。この MD5 値は、UUID レイアウトのすべての 128 ビットを埋めるために使用されます。次に、UUID バージョンとバリアントがセクション 4.2 および 4.1 で定義されているように、それぞれのビットを置き換えます。このビット置換の例は、付録 A.2 にあります。

指定された名前空間内で希望する名前の正規形式を選択することに関する情報は、セクション 6.5 の「名前に関する注意」という見出しの下にあります。

可能な限り、UUIDv3 の代わりに UUIDv5 を使用すべきです。MD5 セキュリティに関する考慮事項の詳細については、[RFC6151] を参照してください。

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| md5_high |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| md5_high | ver | md5_mid |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var| md5_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| md5_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

図 7: UUIDv3 フィールドとビットレイアウト

フィールド定義:

md5_high: レイアウトの最初の 48 ビットは、計算された MD5 値から最上位の左側の 48 ビットで埋められます。ビット 0 から 47 (オクテット 0-5) を占有します。

ver: セクション 4.2 で定義されている 4 ビットのバージョンフィールドで、0b0011 (3) に設定されます。オクテット 6 のビット 48 から 51 を占有します。

md5_mid: レイアウトのさらに 12 ビットで、計算された MD5 値から md5_high の直後の 16 ビットの最下位の右側の 12 ビットで構成されます。ビット 52 から 63 (オクテット 6-7) を占有します。

var: セクション 4.1 で定義されている 2 ビットのバリアントフィールドで、0b10 に設定されます。オクテット 8 のビット 64 と 65 を占有します。

md5_low: var フィールドの直後のレイアウトの最後の 62 ビットで、計算された MD5 値の最後の 64 ビットから最下位の右側のビットで埋められます。ビット 66 から 127 (オクテット 8-15) を占有します。