什麼是隨機權杖產生器?

使用Web Crypto API產生十六進位、Base64、英數字、URL安全、純數字、含符號或完全自訂字元集的隨機令牌。可用於API金鑰、工作階段令牌、CSRF令牌、數字PIN碼和一次性驗證碼,以及密碼重設連結等需要密碼學安全隨機性的場景。

所有位元組來自 crypto.getRandomValues,跟瀏覽器產生 TLS 金鑰用的是同一個來源。可選 16、32、48、64 或 128 位元組長度,熵值面板會即時顯示在所選格式下對應多少位元的隨機性。一次最多產生 20 條 token,可批次下載成 .txt。

使用方法

  1. 選擇令牌格式——十六進位、Base64、英數字、URL安全、純數字、含符號或你自己的自訂字元——並設定所需長度。
  2. 點選產生按鈕,立即建立密碼學安全的隨機令牌。
  3. 複製令牌,或一次批次產生多個令牌。

何時使用

  • 簽發 API key、webhook 簽章密鑰或服務間驗證 token。
  • 產生密碼重設連結、電子郵件驗證 token 或一次性登入網址。
  • 為測試資料填入隨機 ID,避免互相撞號。

結果

產生一個256位元十六進位令牌(64個字元)用作API金鑰:「a3f8b2c1d4e5f6...」,基於crypto.getRandomValues提供完整熵值。

常見問題

API key 到底需要多少位元熵才夠安全?
長期使用的 token 實務下限是 128 位元,完全超出暴力破解可達範圍。用於簽章或參與密碼學運算時建議 32 位元組(256 位元)。短期 session token 16 位元組就足夠。
base64 和 URL-Safe 格式差在哪?
base64 使用 + / 與 = 作為填充,放進網址或檔名會出問題。URL-Safe 把這兩個換成 - 和 _ 並去掉填充。凡是會出現在 query string、路徑或 HTTP header 的 token 都建議用 URL-Safe。
為什麼相同位元組數下,字母數字格式的熵比 hex 低?
hex 和 base64 把每個位元組的完整 8 位元直接對映成字元。字母數字透過取模對映到 62 個字元,每位元組會少約 2 位元,還會帶來微小偏差。當 ID 沒問題,當金鑰就略嫌不足。
如果環境沒有 Web Crypto,可以退而求其次用 Math.random() 嗎?
不行。Math.random() 是可預測的偽隨機,攻擊者看到幾個輸出就能推出下一個。Web Crypto 在 2014 年後的瀏覽器和現代 Node.js 都支援。若環境真的沒有,就乾脆不要產生這個密鑰。
同一個 token 會不會在系統裡重複出現?
16 位元組的 token 大概要簽發 2^64 次才有機會撞上(生日攻擊界線)。在十億等級以下的應用裡,碰撞機率近乎於零,通常不必特別做唯一性檢查。

相關工具