戻る

UUID生成

暗号・ハッシュ

読み込み中

ツールを読み込んでいます

ツールを準備しています。残り時間はまだわかりません。

このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。

このツールについて

従来の UUID 生成機能は、安全なランダム v4 を初期値の5件で生成します。時刻を先頭に持つ v7 も選べます。既存の UUID を貼り付け、形式・バリアント・バージョンと対応する符号化時刻を個別に検査できます。処理はブラウザー内で完結し、入力を送信・保存しません。

主な用途

  • 1~200件のテスト用識別子を作り、1件または改行区切りの一覧をコピーする。
  • ランダムな v4 と、符号化されたミリ秒でまとまる v7 を比較し、厳密な生成順を前提にしない設計を確認する。
  • UUID の形式エラーを調べ、nil/max や旧バリアントを区別し、v1・v6・v7 の符号化時刻を読む。

使い方

  1. 1.初期設定の v4、または v7 を選び、1~200 の整数を指定して生成します。初期件数は 5 です。成功した1件または生成結果全体をコピーできます。
  2. 2.検査では、8-4-4-4-12 の ASCII 十六進形式で1行に1件を貼り付けます。大文字・小文字・混在を受け付け、標準表記は小文字で表示します。検査を実行し、元の各行と結果を照合します。
  3. 3.形式・バリアント・バージョン・時刻は別々の情報として確認し、エラー行を修正してから利用します。生成設定や検査入力を編集すると対応する古い結果が消え、古い出力のコピーを防ぎます。

実行できる UUID 検査例

RFC v7 テストベクトルを正規化して読む

017F22E2-79B0-7CC3-98C4-DC0C0C07398F
{"canonical":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f","variant":"rfc9562","version":7,"unixMilliseconds":1645557742000,"utc":"2022-02-22T19:22:22.000Z"}

この1行を検査欄に貼り付けます。出力は表示項目を短くまとめたものです。生成器は毎回新しい乱数を使うため、v7 の生成でこの固定ベクトルを再現するわけではありません。

同じ時刻を表す v1 と v6 を比較する

c232ab00-9414-11ec-b3c8-9f6bdeced846
1ec9414c-232a-6b00-b3c8-9f6bdeced846
{"version":1,"gregorianTicks":"138648505420000000","utc":"2022-02-22T19:22:22.0000000Z"}
{"version":6,"gregorianTicks":"138648505420000000","utc":"2022-02-22T19:22:22.0000000Z"}

この RFC の2例は、同じグレゴリオ暦起点の 100 ns カウント 138648505420000000 を異なる配置で表します。各行を独立に検査し、要約にも小数点以下7桁を残します。

v4 と独自 v8 の時刻を推測しない

919108f7-52d1-4320-9bac-f847db4148a8
2489e9ad-2ee2-8e00-8ec9-32d5f69181c0
{"variant":"rfc9562","version":4,"timestamp":null}
{"variant":"rfc9562","version":8,"timestamp":null}

どちらも RFC バリアントで、バージョンを識別できます。null はこの検査器が時刻を解釈しないことを表します。独自 v8 のアプリケーションは別のフィールド定義を持つ場合があります。

バージョンより先に nil と max を識別する

00000000-0000-0000-0000-000000000000
ffffffff-ffff-ffff-ffff-ffffffffffff
{"special":"nil","variant":"ncs","version":null,"timestamp":null}
{"special":"max","variant":"future","version":null,"timestamp":null}

全ゼロ・全ビット1の特殊値でも実際のバリアントを表示します。通常のバージョンは適用されず、架空のタイムスタンプも付けません。

バリアントとバージョンらしい半バイトを分ける

00000000-0000-7000-0000-000000000001
00000000-0000-7000-c000-000000000001
00000000-0000-7000-e000-000000000001
00000000-0000-f000-8000-000000000001
{"variant":"ncs","version":null,"timestamp":null}
{"variant":"microsoft","version":null,"timestamp":null}
{"variant":"future","version":null,"timestamp":null}
{"variant":"rfc9562","version":15,"timestamp":null}

最初の3件はバージョン位置が十六進の 7 でも RFC v7 ではありません。最後は RFC バリアントで、予約バージョン 15 です。4件とも標準形式ですが、時刻は解釈しません。

別表記を勝手に修正せずに拒否する

017f22e279b07cc398c4dc0c0c07398f
{017f22e2-79b0-7cc3-98c4-dc0c0c07398f}
urn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f
{"ok":false,"code":"format"}
{"ok":false,"code":"format"}
{"ok":false,"code":"format"}

このツールの厳密な入力方針では、ハイフンなし・波括弧付き・URN 表記を拒否します。形式エラーは行ごとに返します。受け付ける標準表記には ASCII ハイフンが必要で、余分な文字を含められません。

UUID でよくある間違い

  • 空の行、空白、波括弧、urn:uuid: 接頭辞を貼り付ける:各行を正確な標準文字列1件にします。
  • 非 RFC バリアントの 7 を UUIDv7 と解釈する:最初にバリアントの配置を確認します。
  • v7 を秘密情報や厳密な連番と考える:時刻が見え、この生成器では同じミリ秒内の順序がランダムです。
  • 正しい表記や新規生成だけで未使用だと判断する:必要な一意性制約はアプリケーション側で実施します。

制限と注意事項

  • 生成は v4 と v7 のみです。v4 はブラウザーの CSPRNG による 122 ビットのランダム値を使います。この v7 実装は 48 ビットの Unix ミリ秒と 74 ビットの CSPRNG ランダム値で構成し、単調カウンターやミリ秒未満の連番を使いません。同じミリ秒内の順序はランダムで、時計が戻ると後の値が小さくなる場合があります。
  • 件数は 1~200 の整数に限ります。安全な乱数源が使えない場合や失敗した場合は生成を停止し、Math.random への代替や部分的な出力を行いません。UUID はパスワードや認証トークン、秘匿性の証明ではありません。絶対的な一意性、データベースでの予約、全世界の重複照合は保証しません。
  • 検査は最大 200 行・12000 文字です。LF と CRLF で行を区切り、最後の行終端1つを許可します。空行や前後の空白は無効です。ハイフンなし、波括弧、urn:uuid: 接頭辞、Unicode ハイフン、ASCII 以外の十六進文字は明示的に拒否します。上限を超えると検査全体を拒否します。
  • バリアントのビットは NCS、RFC 9562、Microsoft、将来予約のレイアウトを区別します。nil と max は特別な値で、通常の v0/v15 ではありません。RFC のバージョン欄は v1~v8 を識別し、未使用・予約値も表示します。他のバリアントにあるバージョンらしい半バイトには RFC の意味を割り当てません。
  • 時刻を解釈するのは RFC バリアントの v1/v6(グレゴリオ暦起点の 100 ns 単位)と v7(Unix ミリ秒)のみです。v1/v6 は正確なカウントと小数点以下7桁の UTC で 100 ns 精度を保持し、ミリ秒表示は切り捨てます。v4、v8、その他のバージョン、非 RFC バリアント、nil/max から時刻を推測しません。符号化時刻は偽装でき、実際の作成時刻を証明しません。処理はネットワーク要求も入力の永続化も行いません。

よくある質問

v4 と、この v7 生成方式の違いは何ですか?

v4 は固定のバージョン・バリアント以外がランダムです。v7 は現在の Unix ミリ秒で始まり、残りのペイロードに安全な乱数を使います。このツールは単調カウンターを保持しません。標準 v7 表記を並べ替えると符号化されたミリ秒順にまとまりますが、同じミリ秒内はランダムで、時計の巻き戻りでも順序が逆転します。必要な一意性はアプリケーションのデータベース制約で確認してください。

v7 の具体例はどの時刻を示しますか?

017F22E2-79B0-7CC3-98C4-DC0C0C07398F は小文字に正規化され、RFC 9562 バリアントのバージョン 7 と判定されます。Unix ミリ秒は 1645557742000、UTC は 2022-02-22T19:22:22.000Z です。これは格納された値であり、作成時刻を検証した結果ではありません。

正しい表記でも未対応や特別な値になることはありますか?

あります。全ゼロの nil と全ビット1の max は明示的に識別します。旧 NCS/Microsoft や将来予約のバリアントも標準表記を持ちますが、RFC のバージョン意味論は適用しません。RFC のバージョン半バイトは 0 が未使用、9~15 が予約値です。意味を解釈できないことだけで形式エラーにはしません。v2 は DCE Security と識別し、内部レイアウトは復号しません。

v4 や v8 の時刻が表示されないのはなぜですか?

v4 はランダムデータを持ちます。v8 はアプリケーション定義なので、共通のタイムスタンプを推定できません。この検査器が解釈するのは RFC バリアントの v1・v6・v7 だけです。その値も真正性、所有者、一意性、監査イベントの信頼性を証明するものではありません。

関連ツール