一份密碼產生器速查表將強隨機密碼背後的數學濃縮成幾個一目了然的旋鈕:長度、字元池,以及以位元計的熵值。強度歸結到一個公式——熵等於長度乘以池大小的 log2——所以同樣來自較大字元集的較長字串,其隨機性會比塞滿符號的較短字串呈指數級成長。當大寫、小寫、數字與符號全部啟用時,池為 86 個字元,因此每個字元約貢獻 6.4 位元;從這個完整池產生的 16 字元密碼約達 103 位元,遠高於對抗離線暴力破解攻擊時粗略的「強」門檻。這種速查表的切入角度很重要,因為大多數密碼建議都偏向民俗說法:強制定期更換、可預測的替換規則、大小寫混用的肌肉記憶。真正的槓桿在於從密碼學上安全的來源進行均勻隨機選取,再交由密碼管理器儲存結果,這樣你就不會重複使用或循環任何可猜測的樣式。以下是池大小的參考表、逐步運算的熵數學、真正影響安全性的設定,以及使用 密碼產生器 工具在本機產生全新密碼的精確步驟。

password generator cheat sheet
密碼產生器速查表:長度、熵值與設定

一眼看懂的熵值——強度背後的數字

密碼強度不是感覺,而是一種可測量的量,稱為熵,並以資訊的相同單位——位元——來表示。一位元的熵會將攻擊者的不確定性減半,因此每多一位元大致會使暴力破解工作量翻倍。每個密碼強度計背後的公式都很直觀:

熵(位元)= 長度 × log2(池大小)

這裡的「長度」是密碼中的字元數,而「池大小」是產生器在每個位置可能選取的不同字元總數。如果你啟用大寫(26)、小寫(26)、數字(10),以及一組標準符號(24),則池為 86 個字元,且 log2(86) ≈ 6.426。代入這些數字,你無需開啟工具就能預測強度計的讀數。

運算範例:啟用全部四個池的 12 字元密碼,熵值為 12 × 6.426 = 77.1 位元。同樣設定下,16 字元會得到 16 × 6.426 = 102.8 位元,這正是經驗法則從「尚可」進入「強」的門檻。提升到 20 字元時,數字會推升至約 128.5 位元,遠超過離線攻擊者用一般硬體所能勉強突破的程度。多一個字元所帶來的躍進,正是長度成為主導槓桿的原因:每增加一個字元,密鑰空間就乘以 86,而不是在固定長度的字串內把一個符號換成另一個。

那些常被引用的門檻只是定性經驗法則,並非硬性界線:

  • 低於約 60 位元:弱;對離線破解機與外洩雜湊資料庫而言輕易可破。
  • 60 至 100 位元:尚可;能抵禦許多線上攻擊,但對專門的離線暴力破解仍屬脆弱。
  • 100 位元以上:強;遠超出針對妥善雜湊的秘密所進行的一般離線暴力破解能力。

你真正會切換的那些池

任何密碼工具中的「字元類型」勾選框對應四個池。它們的大小是精確的,而總和決定了上文所有熵的數字。

切換項目池大小範例字元
大寫 (A–Z)26A, B, C … Z
小寫 (a–z)26a, b, c … z
數字 (0–9)100, 1, 2 … 9
符號24! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : , . ?
四者全部啟用86—
僅字母(大寫 + 小寫)52a–z, A–Z
英數字混合(不含符號)62a–z, A–Z, 0–9

請注意,加入符號池只為密鑰空間增加 24 個字元,而在上層加入小寫相對於大寫則能增加 26 個字元。這種不對稱正是「丟個 $ 符號進去」所帶來的邊際熵增益,相較於多加一個字元的長度而言是如此微小的原因。這也是為什麼若必須在長度與複雜度之間取捨,光靠符號池永遠是最差的交易:同樣的 86 個字元池中,16 字元密碼永遠勝過 12 字元密碼,密鑰空間的差距超過 1,000 倍。

真正影響安全性的設定

密碼產生器的控制面板提供四個輸入項,但其中只有兩項主導了安全結果,其餘只是改善使用體驗的微調。

1. 長度(主導槓桿)。長度控制了熵公式中的指數。對重要帳戶,請將滑桿或數字框設為至少 16,並把 20 或以上視為主密碼、加密 passphrase,以及任何守護其他秘密之密碼的預設值。當四個池全部開啟時,「100 位元以上」的目標可在 16 字元達到;提高長度後,即使你縮減一個池,仍能維持位元數。

2. 字元池選擇。啟用的池越多,每字元對熵的貢獻就越大。一般用途請保持四個池全開。唯一適合停用某個池的少數情況,是當目標系統無法接受該字元類別——某些舊式硬體會拒絕符號,某些 PIN 欄位會拒絕字母——即便如此,通常只要把長度加 2 就能補回流失的位元。

3. 排除易混淆字元 (0, O, 1, l)。排除這四個在大聲朗讀密碼時最容易混淆的字元,是以少量熵換取人眼可讀性。在四個池全開的情況下,拿掉這四個會讓池從 86 縮減為 82,每字元僅損失約 0.07 位元——在長度 16 時幾乎無感。僅在必須親自讀出或手動輸入密碼時才啟用此切換,否則請保持關閉。

4. 強度與熵的讀數。請把位元數視為真正的分數。低於 60 位元的讀數代表需要更長的長度或更多的池。60 至 100 位元之間的讀數對低價值的帳戶是可接受的。任何涉及金錢、身分或其他憑證的項目,實務上應以 100 位元以上為目標。

以條列形式整理的速查表摘要:

  • 長度優先,複雜度其次。
  • 除非目標系統禁止,否則請保持四個池全部啟用。
  • 針對重要帳戶,目標設為 100 位元以上的熵。
  • 預設關閉「排除易混淆字元」。
  • 為每個網站產生一個新密碼——絕不重複使用或以可預測的方式輪換。

如何在你的瀏覽器中產生一組強密碼

一旦掌握目標,實際產生只需三次點擊。一切都在本機執行——沒有伺服器、沒有上傳、也沒有紀錄。

  1. 設定長度。拖曳滑桿或在數字框中輸入。從 16 字元開始;對於主密碼與加密金鑰,請提升至 20 或 24。
  2. 切換字元池。保持大寫、小寫、數字與符號全部啟用,以獲得最大的池(86 個字元)。若你將親自讀出或輸入結果,可視需要啟用「排除易混淆字元」篩選。
  3. 確認強度與熵估計讀數後,再複製或重新產生一組。確認位元讀數落在 100 或以上。點擊 複製 把密碼送至剪貼簿,或點擊 產生新密碼 再抽一組候選。直接把結果貼進密碼管理器的「新增密碼」欄位;關閉瀏覽器分頁以丟棄記憶體中的副本。

如果你的密碼管理器內建「產生密碼」功能,請將其指向相同的預設值——16 字元以上、四池全開、至少 100 位元——並把這個本機工具當作備援或稽核參考,在你想要驗證任何產生器實際輸出時使用。

為何 CSPRNG 勝過 Math.random 與人為猜測

若底層的隨機性可預測,那麼來自小字元集的高熵字串,並不會比來自大字元集的低熵字串更好。兩個實作細節區分了真正的產生器與仿冒品。

crypto.getRandomValues,而非 Math.random。JavaScript 內建的 Math.random() 雖快,但並非密碼學上安全;其內部狀態可由一小段輸出序列重建,這代表基於它所產生的密碼,其真正的隨機性遠低於長度所暗示的程度。瀏覽器公開的 Crypto.getRandomValues() API 是 CSPRNG——一種被設計為即便對知道所有先前輸出的攻擊者仍不可預測的來源——這正是密碼產生器在底層所使用的。

以拒絕取樣取代模偏差。當池大小無法整除隨機數範圍時,用一般的 % poolSize 將原始隨機數映射到字元池會產生模偏差,導致某些字元比其他字元被選中的機率略高。這會壓低真正的熵,並使輸出稍微更可預測。此產生器會丟棄任何會落入偏差餘數的隨機值並重新抽樣,使選定池中的每個字元都以完全均等的機率被選中。

確保覆蓋率加上 Fisher–Yates 洗牌。在抽出隨機字元後,產生器會保證每個選定的池至少出現一個字元——因此即便每個位置都是獨立隨機,你也不會碰巧抽到「全小寫」。接著再用 Fisher–Yates 演算法將整個字串洗牌,確保那些被強制保證的字元不會被釘在固定位置,消除攻擊者可能利用的可預測樣式。

What NIST SP 800-63B and OWASP Actually Recommend

The two documents most often cited in password policy work have converged on the same handful of points, and both push back against the complexity folklore.

NIST SP 800-63B. The Digital Identity Guidelines explicitly favor long passwords or passphrases over forced complexity rules, and push back against mandatory periodic rotation unless a compromise is known. The guideline also recommends screening candidate passwords against known breached-password lists before accepting them, so the system can reject "Password123!" even if it meets length and symbol requirements.

OWASP Authentication Cheat Sheet. The OWASP Authentication Cheat Sheet echoes the same priorities: length over complexity, unique passwords per service, credential storage using memory-hard or adaptive hashes (Argon2, scrypt, bcrypt), and rate-limiting or CAPTCHA on the authentication endpoint to push back against online brute force.

The operational takeaway lines up with the cheat sheet's math: a long, random, unique password generated by a CSPRNG-backed tool and stored in a password manager beats a shorter, hand-rolled, reused "complex" string on every axis that matters — entropy, breach exposure, and resistance to offline cracking. Excluding ambiguous characters and trimming the symbol pool are ergonomics for readability, not security measures.

Quick Reference Card

The one-screen summary, for the next time you need the numbers without scrolling through the rest of the cheat sheet.

Length (all pools on, pool = 86)Entropy (bits)Strength band
8~51Weak
12~77Fair
16~103Strong
20~129Strong
24~154Strong

Cheat-sheet rules in one line each:

  • Length first; complexity second.
  • All four pools on gives the largest key space per character.
  • 16 or more characters, or 100 or more bits, for accounts that matter.
  • Exclude ambiguous characters only when reading or typing by hand.
  • One password per site, stored in a password manager.
  • Generation is local; nothing is uploaded or stored server-side.

If you're weighing options, Looking for a Password Strength Checker Alternative? covers this in detail.