UUIDデコーダーおよびバリデーター

UUIDをデコードおよび検証して、バージョン、タイムスタンプ、メタデータを抽出します

これらの例を試してください:

UUIDデコードとは?

UUIDデコード はUUIDを解析して以下の情報を抽出するプロセスです:

  • Version: 48-51ビットの4ビットに基づくUUIDバージョン(1-8)
  • Variant: ビット64-65に基づくUUIDバリアント(通常はRFC 4122)
  • Components: バージョンに基づくタイムスタンプ、ノードID、その他のデータの抽出
  • 生成時間: 時間ベースのUUID(v1、v6、v7の場合)

Example: 123e4567-e89b-12d3-a456-426614174000 は2018-10-03 09:45:32 UTCに作成されたバージョン1のUUIDです。

UUID構造の概要

FormatDescription
8-4-4-4-12ハイフンで区切られた32桁の16進数
バージョンビット48-51ビット(13文字目)
バリアントビットビット64-65(17桁目)

バージョン番号は3番目のグループの最初の16進数桁に表示されます(例: 123e4567-e89b-12d3-a456-426614174000 バージョン1の場合)。

UUIDバージョンによるデコード

Versionデコード可能な内容
UUID v1
  • タイムスタンプ(100ns精度、1582年10月15日以降)
  • MACアドレス(ランダム化されていない場合)
  • クロックシーケンス(衝突回避のため)
UUID v3/v5
  • 元の入力をデコードできません
  • 既知の入力から作成されたか検証可能
  • v3(MD5)とv5(SHA-1)を区別可能
UUID v4
  • ランダムデータのみ
  • 抽出可能な情報なし
  • 有効なv4 UUIDであることを検証可能
UUID v6
  • タイムスタンプ(100ns精度、1582年10月15日以降)
  • MACアドレス(ランダム化されていない場合)
  • クロックシーケンス(衝突回避のため)
UUID v7
  • Unixタイムスタンプ(ミリ秒精度)
  • ランダムコンポーネント(デコード不可)
ULID
  • Unixタイムスタンプ(ミリ秒精度)
  • ランダムコンポーネント(デコード不可)

UUIDからのタイムスタンプ抽出

UUIDタイプ時間抽出方法Epoch
UUID v1ビット0-31、32-47、48-59を組み合わせてタイムスタンプコンポーネントを再配置1582年10月15日
UUID v6ビット0-59を抽出(すでに正しい順序)1582年10月15日
UUID v7ビット0-47を抽出(Unixミリ秒)1970年1月1日
ULID最初の10文字のBase32をデコードして48ビットのUnixミリ秒を取得1970年1月1日

UUID検証ルール

  • 形式チェック: ハイフン付きの8-4-4-4-12の16進数桁
  • バージョンチェック: 13文字目は1-8でなければなりません
  • バリアントチェック: 17文字目は8、9、A、またはBでなければなりません(RFC 4122の場合)

基本的なUUID検証のための正規表現:

^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$

実用的な応用

  • 法医学的分析: IDが作成された時期の特定
  • Debugging: IDタイムスタンプを通じたシステム動作の追跡
  • Auditing: 時系列の整合性の検証
  • セキュリティ分析: 偽造または改ざんされたIDの検出
  • データ復旧: 時間的関係の再構築
  • システム移行: レガシーUUID実装の詳細の理解

MACアドレス抽出(v1/v6)

UUID v1およびv6では、生成時にランダム化されていなければノード識別子(MACアドレス)を抽出できることがあります。

  1. UUIDから最後の12桁の16進数(48ビット)を抽出
  2. XX:XX:XX:XX:XX:XXの形式(コロン区切り)
  3. マルチキャストビットを調べてMACアドレスが実際のものかランダムかを確認

最初のバイトのビット0x01がセットされている場合、それは実際のMACアドレスではなくランダム化されたノードIDである可能性が高いです。

よくある質問

UUID v4が正確にいつ作成されたかを特定できますか?

いいえ。UUID v4は純粋にランダムでタイムスタンプ情報はありません。UUID v4の値から作成時刻を特定することはできません。

時間ベースUUIDのタイムスタンプの精度はどのくらいですか?

UUID v1/v6のタイムスタンプは100ナノ秒精度です。UUID v7およびULIDはミリ秒精度です。ただし、実際のシステムクロックの精度は異なる場合があります。

UUIDバージョン間で変換できますか?

いいえ、同じ識別子値を保持しながらバージョン間で直接変換することはできません。異なるバージョンは根本的に異なる構造を持っています。

UUID v1を生成したコンピュータを特定できますか?

ノードIDがランダム化されていなければ、UUID v1には生成システムのMACアドレスが含まれている場合があります。ただし、多くの最新実装ではプライバシー保護のためにこれをランダム化しています。

UUIDが有効かどうかはどう判断しますか?

形式をチェック(8-4-4-4-12の16進数桁)、バージョン数字(13文字目)が1-8であることを確認し、バリアントビット(17文字目がRFC 4122 UUIDの場合は8、9、A、またはB)を検証します。

Resources