🆔 UUID v5 生成(名前空間ベース)

同じ名前空間と名前の組み合わせからは常に同じUUIDが生成されます(RFC 4122 UUID v5、SHA-1ベース)。

有効な名前空間UUIDと名前を入力してください

名前空間UUIDと名前(文字列)を入力すると、RFC 4122で定義されたUUID v5を生成するツールです。UUID v4のようなランダム生成とは異なり、同じ名前空間と名前の組み合わせからは常に同じUUIDが生成される決定論的な方式(SHA-1ハッシュベース)です。

使い方

  1. 名前空間を選択します(DNS・URL・OID・X.500の標準名前空間、または任意のカスタムUUID)。
  2. 名前(文字列)を入力します。
  3. 生成されたUUID v5が自動的に表示されます。

計算の仕組み

UUIDバージョン5は、「名前空間」と「名前」から、いつ誰が計算しても同じUUIDが得られる、決定的なUUIDです。RFC 4122(現在はRFC 9562)で定められています。 1. 名前空間UUIDを16バイトにし、その後ろに名前をUTF-8のバイト列でつなげます。 2. その全体のSHA-1ハッシュ(20バイト)を計算し、先頭の16バイトを使います。 3. 7バイト目の上位4ビットをバージョン番号の5に、9バイト目の上位2ビットをバリアントの10に書き換えます。 名前空間には、RFCで決められたDNS(ドメイン名)、URL、OID、X.500のほか、任意のUUIDを使えます。同じ名前でも名前空間が違えば、別のUUIDになります。

計算例

名前空間: DNS(6ba7b810-9dad-11d1-80b4-00c04fd430c8) 名前: python.org 結果: 886313e1-3b8a-5372-9b90-0c9aee199e5d これはPythonの公式ドキュメントに載っている uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') の例と同じ値です。3つ目のブロックが「5」で始まっていることから、バージョン5だとわかります。

使用上の注意

  • 同じ入力からは必ず同じUUIDになるため、URLやメールアドレスなどから安定したIDを作りたいときに便利です。
  • 名前がわかればUUIDを計算できてしまうため、推測されてはいけないIDには、ランダムなバージョン4を使ってください。
  • バージョン3はMD5を使う以外は同じ仕組みです。新しく使うならバージョン5が推奨されています。

よくある質問

UUID v4とv5の違いは何ですか?

UUID v4は暗号学的乱数から生成される完全にランダムなUUIDです。UUID v5は「名前空間UUID」と「名前」の組み合わせをSHA-1でハッシュ化して生成する決定論的なUUIDで、同じ入力からは常に同じ結果が得られます。

標準の名前空間UUIDとは何ですか?

RFC 4122ではDNS・URL・OID・X.500の4つの標準名前空間UUIDが定義されています。例えばDNS名前空間と「python.org」からUUID v5を生成すると、常に同じ値(886313e1-3b8a-5372-9b90-0c9aee199e5d)が得られます。

何に使えますか?

既知の文字列(URLやドメイン名など)から再現可能なIDを生成したい場合や、重複しない一意のIDを決定論的に割り当てたい場合に便利です。