UUID生成
UUID Generator
UUIDのv1・v4・v5・v7をまとめて作り、v1やv7に埋まっている時刻を取り出します。
UUIDをブラウザの中で作ります。ただの乱数ならv4、生成した時刻の順に並んでほしいならv7、同じ入力から必ず同じidが出てほしいならv5かv3です。読み解くこともできます。UUIDを貼り付けると、バージョンとvariantのビットを読み、v1・v6・v7なら中に埋まっているタイムスタンプまで取り出します。
乱数122ビット。既定であり、並び順が要らないならこれが正解です。
UUID 0個
このタブで `crypto.getRandomValues` を使って作ります。サーバーには何もリクエストしないので、この値を見た人はほかに誰もいません。
UUIDの中身を見る
UUIDを貼り付けると、バージョンとバリアントのビットを、v1・v6・v7ならその中のタイムスタンプまで読み取ります。
バージョンとバリアントのビットはRFC 9562に従い、付録Aの実例と突き合わせてあります。v1とv6のノードIDはマルチキャストビットを立てた乱数です。ブラウザには漏らすMACアドレスがありません。
使い方
バージョンを選びます
理由が無いかぎりv4です。理由はたいてい並び順です。v7は先頭のビットにUnixのミリ秒を持っているので、これをキーにしたテーブルは挿入順のまま保たれ、インデックスが断片化しません。
表記を決めます
大文字、ハイフン、そしてWindowsや.NETが使う`{…}`の波括弧です。変わるのは文字だけで、その下にある128ビットは変わりません。
v3・v5ならネームスペースと名前を渡します
これらのバージョンは2つをまとめてハッシュにかけます。だからDNSのネームスペースに`www.example.com`を渡せば、いつどこで実行しても同じUUIDになります。それが存在理由であり、乱数でない理由です。
まとめてコピーするか、1つを読み解きます
「すべてコピー」は一覧をまるごと持っていき、各行の横の読み解きはその値を下の解析欄に入れます。元の16バイトも一緒に表示します。
よくある質問
トークンとして使えるだけの無作為性がありますか
v4は`crypto.getRandomValues`から取った122ビットの乱数を持ちます。本物のCSPRNGで、122ビットの秘密と同じだけ推測しにくいものです。ただしv1・v6・v7は大部分がタイムスタンプで、v3・v5は誰かが推測できるかもしれない入力のハッシュです。予測できないのはv4だけです。
v1はMACアドレスを漏らしますか
ここでは漏らしません。もともとのv1はネットワークカードのアドレスを使っており、あの評判はそこから来ています。ブラウザはそのアドレスに触れられないので、ノードのフィールドはマルチキャストビットを立てた乱数です。仕様がまさにこの場合のために用意している逃げ道です。
v5をまとめて作ると、全部が同じにならないのはなぜですか
行ごとに名前の後ろへ連番を付けているからです。そうしないと10個作っても同じ値が10回並ぶだけで、正しくはあっても使い道がありません。まさにその名前のハッシュが必要なら、1つずつ作ってください。
UUIDは主キーに向いていますか
v7ならたいてい向いていて、v4ならたいてい向いていません。乱数のキーは挿入がB木全体に散らばってインデックスを断片化させ、大きなテーブルではその差が数字に出ます。すでにv4を使っていてつらいなら、みなが選ぶ移行先はv7です。
ここから渡せます
次の一手
このツールが出したものをそのまま受け取れる道具です。
UNIXタイムスタンプ変換
Unix Timestamp Converter
エポック秒・ミリ秒・ISO 8601・人が読む日時を、任意のタイムゾーンで相互に変換します。
ULID・NanoID生成
ULID & NanoID Generator
並べ替えのきくULIDや短いNanoIDを、使う文字と長さを決めて作り、衝突の確率も示します。
ランダムキー生成
Random Key Generator
暗号学的な乱数バイトを指定した長さで16進・Base64・Base64URLとして生成し、アプリのシークレットに使えるようにします。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。