多數帳號外洩不是有人「破解」了強密碼,而是來自重複使用、太短或外洩的密碼。這篇談什麼才真正讓密碼變強,以及務實的管理方法。
密碼是隨機的,強度是你可以自己算的算術。 我們的密碼產生器預設長度 16,含大寫、小寫與數字 —— 字元池 62 個。熵 = 長度 × log₂(字元池),所以 16 × log₂(62) ≈ 95 位元,工具標成「Strong」。門檻寫死在程式裡:低於 45 位元弱、低於 75 普通、再上去強。兩個推論:加上符號會把字元池提到 87,只多約 8 個位元;而長度多加四個字元,大約多 24 個位元。
長度勝過複雜度
隨機密碼的強度來自它的熵 —— 大致是攻擊者必須嘗試的組合數。熵隨長度成長的速度,遠快於花俏的字元規則。一個 20 字元的密碼比 8 字元的難暴力破解太多,即使後者有 !@#$。
強制的複雜度規則(「必須含大寫和符號」)常常適得其反:它把人推向 Password1! 這種可預測的模式。長而隨機優於短而花招。用密碼產生器可即時得到長、高熵的字串。
我們自己的產生器把這個算術攤開來。在預設值下 —— 長度 16、大寫加小寫加數字、字元池 62 個 —— 熵是長度 × log₂(字元池),所以 16 × log₂(62) ≈ 95 位元,它標成「Strong」。現在比較兩種改善方式:打開符號會把池提到 87,多約 8 個位元;而長度多加四個字元,多約 24 個。長度贏,而數字說出贏多少。
這個說法是算術,而我們自己的密碼產生器把算式攤開了。在頁面預設值下 —— 長度 16、只有字母與數字 —— 字元池是 62,強度顯示 Strong,因為 16 × log2(62) 大約是 95 位元。把符號集也打開,池就變成 87:我們的符號清單有 25 個不同字元,所以是 26 + 26 + 10 + 25。對一個 16 字元的密碼加上符號,買到大約五個位元;多加四個字元,買到大約二十個。「長度優先」這整個論點,一次比較就講完了。
通行短語:又強又好記
對於少數你真的得憑記憶輸入的密碼(裝置登入、密碼管理器的主密碼),用四個以上隨機單字組成的通行短語既強又好記 —— 遠優於短的「複雜」字串。關鍵字是隨機:選你不是因為意義而挑的字。
最重要的兩條規則
- 絕不重複使用密碼。 一個網站外洩,攻擊者會拿那組帳密到處試(稱為撞庫)。每站用不同密碼能把災情圍堵住。
- 用密碼管理器。 你記不住 100 組不同的 20 字元密碼 —— 也不該去記。管理器會幫你產生、儲存、自動填入,你只要記一組強的主通行短語。
加上兩步驟驗證(2FA)
再完美的密碼也可能被釣魚或外洩。2FA 多加一步 —— 驗證器 App 的代碼或硬體金鑰 —— 讓單靠偷來的密碼不夠用。email、銀行與任何重要帳號都該開啟。App 或硬體 2FA 比簡訊更安全。
快速檢查清單
- 網站登入用長(16+ 字元)且隨機 → 用產生器。
- 主密碼用好記的隨機通行短語。
- 每站唯一,存在密碼管理器裡。
- 重要帳號開2FA。
- 絕不把密碼存在純文字筆記、試算表或聊天訊息。
現在就用免費的密碼產生器產生一個強隨機密碼 —— 它用瀏覽器的加密級亂數,不上傳、不儲存任何東西。
一份檢查清單只有在你真的能檢查時才有用,所以這裡給一個可以檢查的數字。我們的密碼產生器在長度 16、字元池 62 的情況下回報 Strong,大約 95 位元。把每一個字元類別都打開,池會到 87(26 + 26 + 10 + 25 個符號)。如果一個產生器不告訴你它的池有多大,你就沒辦法驗證它的強度宣稱 —— 而背後沒有池的「Strong」是一個顏色,不是一個量測。
熵一覽表
熵以位元(bit)計,每多一個位元,攻擊者要試的次數就翻倍。下表假設每個字元或單字都是均勻隨機挑選的;人為想出的「聰明」密碼,實際熵遠低於此。
| 密碼 | 組成 | 約略熵 |
|---|---|---|
| 8 字元 | 大寫 + 小寫 + 數字 | ~48 位元 |
| 12 字元 | 再加符號(95 字元集) | ~79 位元 |
| 16 字元 | 再加符號(95 字元集) | ~105 位元 |
| 4 個隨機單字 | 取自 7,776 字的字表 | ~52 位元 |
| 6 個隨機單字 | 取自 7,776 字的字表 | ~78 位元 |
低於約 50 位元算弱;達 75 位元以上,一個正確雜湊過的密碼就能從容抵擋離線破解。六個隨機單字的通行短語(約 78 位元)與 12 字元的符號大雜燴不相上下,卻好打得多。
那些門檻也不是意見 —— 它們寫死在工具裡:低於 45 位元說弱、低於 75 說普通、再上去說強。這就是為什麼預設的 16 個字元落在 95 位元、顯示「Strong」,而完全不需要符號。
關於那個 95 位元要補一句,因為這是最常被引用錯的數字:它是產生器的熵,不是密碼的熵。它假設每一個字元都是獨立且均勻抽出來的 —— 對我們的輸出來說為真,對任何你自己想出來的東西來說為假。一個由兩個字典詞加一個年份組成的人選 16 字元密碼,大概有 30 個位元,不是 95 —— 長度完全一樣,熵完全不一樣。這也是為什麼「它有多長」只有在「誰選的」這個問題的答案是「隨機數產生器」時,才是個有用的問題。
常見迷思
- 「每 90 天強制換一次比較安全。」 現代指引(NIST SP 800-63B)持相反看法:定期到期只會逼出
Spring2026!→Summer2026!這種遞增密碼。只有在懷疑外洩時才該更換。 - 「
P@ssw0rd有符號所以很強。」 破解工具會優先套用這些「字母換符號」的替換;字典單字加上顯而易見的替換,幾乎沒有加分。 - 「密碼管理器是一個大的單點故障。」 它的保險庫是用你的主通行短語加密的,而且它消除了更大的風險 —— 重複使用。
這也順便處理掉最常見的誤解。把 a 換成 @ 不會增加熵,因為它沒有改變池:攻擊者的字典裡本來就同時有兩種拼法。會改變算術的是池和長度 —— 我們的預設值是 62 的 16 次方,或者用比較好讀的方式說,95 位元。多四個隨機字元,勝過你想得出來的任何聰明替換 —— 而這件事你可以用乘法核對。
你的密碼應該怎麼被儲存
這你控制不了,但值得知道「好」長什麼樣:好的服務絕不以明文存你的密碼,只會保存用 bcrypt、scrypt 或 Argon2 這類「慢」演算法做出的加鹽雜湊,絕不用單純的 MD5。如果某網站能把你的原始密碼用 email 寄回給你,那就是警訊;想知道為什麼快速雜湊在這裡不合格,可看MD5 還安全嗎?。
小 FAQ
簡訊 2FA 沒用嗎? 不,遠比沒有好,但驗證器 App 或硬體金鑰能避開 SIM 卡調包攻擊,能用就優先用。
如果網站限制長度或禁用符號怎麼辦? 用它允許的最長長度,並保持唯一即可 —— 用密碼產生器就能在符合各站規則的同時維持隨機。