🆔 UUID v5 生成(名前空間ベース)
同じ名前空間と名前の組み合わせからは常に同じUUIDが生成されます(RFC 4122 UUID v5、SHA-1ベース)。
有効な名前空間UUIDと名前を入力してください
名前空間UUIDと名前(文字列)を入力すると、RFC 4122で定義されたUUID v5を生成するツールです。UUID v4のようなランダム生成とは異なり、同じ名前空間と名前の組み合わせからは常に同じUUIDが生成される決定論的な方式(SHA-1ハッシュベース)です。
使い方
- 名前空間を選択します(DNS・URL・OID・X.500の標準名前空間、または任意のカスタムUUID)。
- 名前(文字列)を入力します。
- 生成された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を決定論的に割り当てたい場合に便利です。