UUID
RFC 9562 Universally Unique IDentifiers (UUIDs) ISO/IEC 9834-8:2014
128bit 固有IDっぽいもの
バージョンが判別可能
GUIDはMicrosoft の UUIDの別名? リトルエンディアン? UUIDv2の場合
time-low 32bit
time-mid 16bit
time-high-and-version 16bit
version 4bit
time_hi 12bit
clock-seq-and-reserved 8bit
variant 2bit
clock_seq 14bit
clock-seq-low 8bit
node 48bit
code:ABNF
UUID = 4hexOctet "-"
2hexOctet "-"
2hexOctet "-"
2hexOctet "-"
6hexOctet
hexOctet = HEXDIG HEXDIG
DIGIT = %x30-39
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
バイト順はネットワークバイトオーダー(ビッグエンディアン)、ただしGUIDはLittle-Endianを使う。
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
文字列型UUID フォーマットの例
11111000000111010100111110101110011111011110110000010001110100001010011101100101000000001010000011001001000111100110101111110110
バイナリUUIDの例
329800735698586629295641978511506172918
整数UUIDの例
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
9オクテット目? variant 上位2ビット (RFC, ISOの場合)
table:バリアント
0 Network Computing System 後方互換性
10 RFC, ISO用 UUID
110 Microsoft GUID
111 予約
7オクテット目? version
UUIDv1 時間ベース Macアドレス 仮想化などで一意性が保証されなくなった
UUIDv2 DCEセキュリティ
UUIDv3 名前ベース MD5ハッシュ
UUIDv4 ランダム
UUIDv5 SHA-1ハッシュ DNS, URL, OID, X.500
UUIDv6 v1と互換で時間順ソート可能
UUIDv7 時間順ソート可能
UUIDv8 実験
v4かv7が推奨 v5をSHA-2にする場合は実験のv8を使用する
UUIDv4
UUIDv5
Namespcae ID
というものがあるよ
example.com などの名前のハッシュ(主にsha-1?)と組み合わせることで共通のUUIDが得られるっぽい
DNS
URL
OID
X500
用の4種類のUUIDがあるらしい
亜種 RFC 9562
JavaScript
Java