ULID 產生器
從加密隨機性產生單調的 ULID 批次,並解碼內嵌的毫秒時間戳。
隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。
使用方式
- 1.選擇「產生」,設定數量從 1 到 100,並產生一個單調批次。
- 2.複製完整的識別碼,並儲存在大小寫保留的欄位中,並設定唯一約束。
- 3.選擇「解碼」,貼上一個標準的 ULID,並讀取其毫秒與 UTC 時間戳。
關於ULID 產生器
ULID 產生器會產生符合標準的普遍唯一詞序可排序識別碼,並解碼其內嵌的時間戳。一個 ULID 由 26 個 Crockford Base32 字元組成:前 10 個字元編碼 Unix 毫秒時間戳,後 16 個字元則編碼 80 位元的隨機性。可點選一次從 1 到 100 的值產生,或切換至「解碼」功能,讀取已有標準字串中的時間戳與 ISO UTC 時間。
產生過程使用瀏覽器的加密隨機來源取得初始 80 位元值。每個批次中的 ID 會使用相同的捕捉毫秒值,並在隨機區域遞增一,含進位,因此產生的字串在正常 ASCII 詞序中嚴格遞增。若 80 位元欄位會溢位,產生將失敗,不會迴圈。此設計實現批次內的單調行為,且不儲存識別碼或跨點選的隱藏狀態。
時間戳必須符合 ULID 48 位元的無符號範圍,從零到 281474976710655 毫秒。因此最大標準字串以 7 開頭;任何以 26 字元的 Base32 值開頭且大於 8 的值,包含超過 128 位元,將被拒絕。字元集合排除 I、L、O、U 以減少混淆。解碼為不區分大小寫,但僅接受標準字元集合經標準化後的字元。
時間欄位讓 ULID 可用於有序索引與日誌關聯,但也會暴露大約的產生時間。若該元資料敏感,請勿使用 ULID。詞序排序假設使用標準的 26 字元表示法,以及通常的位元組或 ASCII 相容的排序方式。若進行大小寫轉換、地區化排序、截斷、填充或儲存在容量不足的欄位中,將會破壞預期的順序。請測試資料庫的確切排序規則與資料表結構。
隨機性可降低碰撞機率,但無法提供絕對的唯一性保證。穩固的資料庫應建立唯一約束並以原子方式處理衝突。本工具僅驗證批次構造與單調溢位,無法與其他標籤、裝置、服務或先前產生的值協調。請勿將「檢查後插入」作為最終的唯一性控制機制。
識別碼不是密碼、API 金鑰、承載令牌、授權規則或加密金鑰。顯示的時間戳與隨機字尾無法保護記錄免於列舉或洩露,若缺乏適當的存取控制。應使用目標平臺的專用機制產生憑證,並儲存在秘密管理器中。避免在與個人或機密資料相關聯的情況下記錄 ULID。
所有產生、解碼、格式化與複製操作皆在瀏覽器中完成。不會上傳任何識別碼或時間戳。頁面僅在點選「產生」按鈕時使用 Date.now,伺服器端渲染期間不會使用,因此初始頁面內容為確定性。顯示的 ISO 時間為 UTC;當地日曆顯示可能因時區而異,但毫秒值保持不變。
八個外部測試案例固定了零值、Base32 邊界、一秒、參考解碼時間範例以及最大時間戳。額外測試確認三項元素的決定性單調批次、字元集大小、不合法的 130 位元輸入以及隨機溢位。為確保可靠使用,請保留完整大寫字串,儲存在大小寫保留的 26 字元欄位中,強制唯一性,並將解碼時間視為元資料,而非認證真實。
方法與來源
每次點選會捕捉一個整數毫秒,將其編碼為 10 個 Crockford Base32 字元,取得 80 個加密隨機位元,對批次中的該欄位遞增,拒絕 80 位元溢位,僅解碼在 128 位元限制內的標準 26 字元值。
常見問題
- ULID 保證永遠不會碰撞嗎?
- 沒有任何隨機識別碼有絕對保證。即使擁有大型 80 位元的隨機欄位,仍應使用資料庫的唯一約束,並以原子方式處理衝突。
- 為何有人能從我的 ULID 中讀取時間?
- 前 48 位元刻意編碼 Unix 毫秒,以支援詞序時間排序。若需要隱藏大約的產生時間,請勿使用 ULID。
- ULID 可作為存取令牌嗎?
- 不可以。識別碼不會取代身份驗證或授權,且時間戳是公開的元資料。請使用專用憑證系統來處理機密。
相關工具
- UUID 產生器在瀏覽器中批次產生符合 RFC 標準的 4122 v4 UUID,可複製單個或全部內容。
- Unix 時間戳轉換器將 Unix 時間戳轉換為人類可讀的日期(UTC、本機時間、ISO 8601)以及反向轉換——瞬間完成,完全在瀏覽器中執行。
- Base32 編碼 / 解碼將 UTF-8 文字編碼為標準 RFC 4648 Base32,或將填充與未填充的 Base32 解碼回嚴格 UTF-8。
- 隨機數生成器從你選擇的包含性範圍內產生公平的隨機整數,且不會將任何值傳送至伺服器。
- ANSI 色彩碼產生器建立並複製原始 SGR 逸出序列,並搜尋標準 8 色加亮 8 色的終端機色碼。
- ASCII 表格查詢所有標準 7 位 ASCII 編碼的精確十進位、十六進位、八進位與二進位值。
開發者工具 使用指南
查看全部- Decode a ULID Timestamp: Read the Milliseconds in UTC (英文原文)
- Convert .properties Files to JSON Online (英文原文)
- Random MAC Address On or Off: A Developer Guide (英文原文)
- Generate a JWT for Testing: HS256 Tokens in Your Browser (英文原文)
- How to Decode JWT Tokens in Angular Apps (英文原文)
- JSON Schema to Zod: Inference Limits and a Safer Path (英文原文)
- Rust: Convert a Struct to a JSON String With serde (英文原文)
- How to Convert JSON to Excel in Python (英文原文)
- JSON to CSV Alternative With Built-In Formula Protection (英文原文)
- Format a JSON File in VS Code and in Your Browser (英文原文)
- Local JavaScript Playground Alternative for Safe Testing (英文原文)
- How to Convert IPv4 to a 32-Bit Integer for Storage (英文原文)
- Convert Decimal Numbers to IEEE 754 Floating Point Format (英文原文)
- HTTP Status Codes Alternative: A Registry-First Lookup (英文原文)
- How to Edit HTML in a Browser Using a Sandboxed Preview (英文原文)
- Format HTML Code from Notepad++ Without Plugins (英文原文)
- Why Is Hello World Used in Programming: A Practical Guide (英文原文)
- How to Make Flexbox Items Fill the Container Height (英文原文)
- File Signatures List Alternative: Twelve Verified Prefixes (英文原文)
- How to Open Excel Files Online in a Browser Preview (英文原文)