跳至正文

UUID/GUID 產生器

產生 UUID (Universally Unique Identifier) v4 的免費線上工具。

⚙️ 생성 옵션

✨ 생성된 UUID

UUID (Universally Unique Identifier) v4를 생성합니다. 각 UUID는 통계적으로 고유하며, 데이터베이스 키, 세션 ID 등으로 사용됩니다.

💡 예시

기본 (소문자, 하이픈):
550e8400-e29b-41d4-a716-446655440000
대문자:
550E8400-E29B-41D4-A716-446655440000
하이픈 없음:
550e8400e29b41d4a716446655440000

什麼是 UUID?

UUID (Universally Unique Identifier) 或 GUID (Globally Unique Identifier) 是用於唯一識別資訊的 128 位元數字。UUID v4 隨機產生,重複機率幾乎為零。

主要功能

  • 批量產生:可選擇產生 1、5、10、20 個
  • 大小寫:選擇大寫或小寫格式
  • 連字號選項:選擇包含或移除連字號
  • 即時複製:點擊一次即可複製到剪貼簿
  • 基於瀏覽器:無需安裝,完全在客戶端執行

使用方法

基本使用

  1. 選擇要產生的 UUID 數量(1、5、10、20)
  2. 選擇選項:
    • 大寫:勾選後以大寫產生
    • 包含連字號:勾選後包含連字號格式
  3. 點擊「產生」按鈕
  4. 複製產生的 UUID 使用

格式選擇

基本格式(小寫、包含連字號)

550e8400-e29b-41d4-a716-446655440000

大寫

550E8400-E29B-41D4-A716-446655440000

無連字號

550e8400e29b41d4a716446655440000

UUID 結構

UUID v4 具有以下結構:

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
  • x:隨機十六進位數(0-9, a-f)
  • 4:版本號碼(表示 v4)
  • y:隨機十六進位數(8、9、a、b 其中之一)

總共 128 位元 = 以 32 位十六進位數表示。

使用案例

1. 資料庫主鍵

CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100),
email VARCHAR(100)
);

2. 分散式系統 ID

多個伺服器獨立產生 ID 也不會衝突:

const userId = '550e8400-e29b-41d4-a716-446655440000';
const sessionId = 'a3bb189e-8bf9-3888-9912-ace4e6543002';

3. 檔案名稱

const filename = `upload-${uuid}.jpg`;
// upload-550e8400-e29b-41d4-a716-446655440000.jpg

4. API Token

Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000

5. Session ID

const sessionId = generateUUID();
sessionStorage.setItem('sessionId', sessionId);

UUID 版本

UUID v1

  • 基於時間戳記 + MAC 位址
  • 保證時間順序
  • 有 MAC 位址洩露疑慮

UUID v4(此工具使用)⭐

  • 完全隨機
  • 最廣泛使用
  • 無個人資訊洩露

UUID v5

  • 基於名稱(SHA-1 雜湊)
  • 相同輸入 → 相同 UUID

碰撞機率

UUID v4 的碰撞機率極低:

  • 總可能 UUID 數:2^122 ≈ 5.3 × 10^36 個
  • 產生 10 億個時的碰撞機率:約 10^-18(幾乎為 0)
  • 宇宙中所有原子數:10^80 個

實際上完全不需要擔心碰撞!

各程式語言使用方法

JavaScript

// 瀏覽器
const uuid = crypto.randomUUID();

// Node.js
const { v4: uuidv4 } = require('uuid');
const uuid = uuidv4();

Python

import uuid

# 產生 UUID v4
my_uuid = uuid.uuid4()
print(my_uuid) # 550e8400-e29b-41d4-a716-446655440000

Java

import java.util.UUID;

UUID uuid = UUID.randomUUID();
String uuidString = uuid.toString();

PHP

<?php
$uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
?>

C#

using System;

Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();

實用技巧

1. 批量產生

需要大量 UUID 時一次產生:

  • 測試資料產生
  • 遷移腳本
  • 種子資料準備

2. 資料庫索引

將 UUID 用作主鍵時的注意事項:

  • 完全隨機 → B-Tree 索引效能可能下降
  • 考慮 UUID v1 或 ULID(具順序特性)
  • 建議使用 PostgreSQL 的 gen_random_uuid()

3. 在 URL 中使用

// 移除連字號的格式較簡潔
const url = `https://example.com/items/${uuid.replace(/-/g, '')}`;

4. 日誌與追蹤

const requestId = crypto.randomUUID();
console.log(`[${requestId}] Request started`);
// ... 處理 ...
console.log(`[${requestId}] Request completed`);

安全考量

✅ 安全使用

  • Session ID
  • API 金鑰(搭配額外安全措施)
  • 臨時檔案名稱
  • 追蹤 ID

⚠️ 需要注意

  • 無法預測但非機密:不要僅用 UUID 進行驗證
  • 需要額外驗證:權限確認、簽章等
  • 可能洩露:包含在 URL 中時會記錄在日誌中

常見問題

Q: UUID 真的是唯一的嗎?

是的。統計上碰撞機率幾乎為 0。實際上即使每秒產生 10 億個,持續宇宙年齡的時間,也幾乎不會重複。

Q: UUID v4 與 v1 的差異是?

  • v1:基於時間戳記 + MAC 位址,保證時間順序,有個人資訊洩露疑慮
  • v4:完全隨機,無時間順序,個人資訊安全

Q: 應該使用大寫還是小寫?

一般來說小寫是標準,但兩者都有效。根據系統需求選擇即可。

Q: 連字號是必要的嗎?

連字號是為了可讀性。某些系統偏好無連字號格式。

Q: 可以用作資料庫主鍵嗎?

可以。但為了效能,也可以考慮順序 ID(AUTO_INCREMENT)或 ULID。

Q: 可以將 UUID 用作密碼嗎?

不建議。UUID 雖然無法預測,但使用密碼雜湊函數(bcrypt、argon2)更安全。

相關工具

效能

  • 產生速度:不到一毫秒
  • 瀏覽器支援:Chrome 92+、Firefox 95+、Safari 15.4+
  • 記憶體使用:最小
  • 離線運作:完全支援

瀏覽器相容性

此工具使用 Web Crypto API:

  • Chrome 92+ ✓
  • Firefox 95+ ✓
  • Safari 15.4+ ✓
  • Edge 92+ ✓

舊版瀏覽器可能無法運作。

💬 這個工具對您有幫助嗎?

如果您覺得這個 UUID 產生器有用,歡迎分享給更多人!我們持續改進工具功能,如有任何建議或問題,請隨時與我們聯繫。

隱私保護

此工具完全在客戶端運作。產生的 UUID 不會傳送到伺服器,僅在瀏覽器中處理。