一個由大小寫字母、數字與符號組成的 16 字元密碼,大約具備 103 位元的熵——這是普遍被視為能抵禦離線暴力破解攻擊的門檻——而一個免費、在本機運作的密碼產生器,就是產生這類密碼最簡單的方式。其數學原理很直觀:當四種字元類型全部啟用時,字元池大小為 86,log₂(86) ≈ 每字元 6.43 位元,因此 16 × 6.43 ≈ 102.9 位元。這個單一數字重新詮釋了為何長度的重要性遠勝過你在其中撒入的符號。一個完全在瀏覽器中執行、從密碼學安全 RNG 取得隨機性、且絕不將結果傳送到任何地方的產生器,讓你能在不信任任何遠端服務的情況下,把這 16 個字元轉化為真正的秘密。本指南的其餘部分將說明這個 103 位元數字究竟能保護你抵禦哪些攻擊、為何底層的隨機性來源是大多數自製產生器最容易出錯的地方,以及如何在數秒內產生一個這樣的密碼的確切步驟。
大多數搜尋「password generator 16 characters free」的讀者,通常一次想要三件事:長度設定剛好落在 16、通過任何政策都足夠強的字元類型組合,以及一個能直接貼到註冊表單的結果。密碼產生器正是圍繞這個任務所打造——一個用於設定長度的滑桿或數字方塊、各字元類別的開關、一個將數學轉譯為強度標籤的熵值顯示,以及一個複製按鈕,可將字串放進剪貼簿,卻從不透過網路傳送。

16 個字元在熵值上實際能為你帶來什麼
密碼強度是以熵的位元數來衡量,其公式為長度乘以字元池大小的以 2 為底的對數。字元池大小就是產生器在每個位置上可以選擇的不同字元數量。開啟大寫字母 (26)、小寫字母 (26)、數字 (10) 與符號 (24),字元池便成為 86,因此每個位置貢獻 log₂(86) ≈ 6.43 位元。十六個位置便能產生約 102.9 位元——也就是在大多數強度計上,針對一個完整載入的 16 字元密碼所顯示的「大約 103 位元」。
若關閉符號,字元池會縮減至 62 (log₂ ≈ 5.95),同樣的 16 字元字串會降至約 95 位元。若再關閉數字,則剩下 52 (log₂ ≈ 5.70),16 字元大約只有 91 位元。這個數學說明了一個令人不安的事實:移除字元集合會讓你付出真實的熵值代價;反觀在完整字元池的密碼上多加第 17 個字元,總熵值會躍升至約 109 位元——以同樣的決定換取更大的提升。經驗法則是:低於 60 位元屬於弱、60 到 100 位元屬於中等,超過 100 位元則屬於能抵禦離線暴力破解攻擊的強。完整字元池的 16 個字元可跨越最後一個級距;只有字母與數字的 16 個字元則僅勉強落在「中等」之內。
| 值級距 | 位元範圍 | 實際意義 |
|---|---|---|
| 弱 | 低於 60 位元 | 容易遭受快速的離線暴力破解;重複使用是更大的風險 |
| 中等 | 60–100 位元 | 適用於低價值帳號與可丟棄的登入 |
| 強 | 100+ 位元 | 能抵禦針對遭竊密碼雜湊的離線攻擊 |
為何本機產生比上傳式服務更安全
密碼的秘密程度取決於產生它的系統,這就是為何隨機性來源的重要性高過介面本身。JavaScript 的 Math.random 雖然方便,卻並非密碼學安全——其輸出可由先前的值預測,因此觀察過幾個早期結果的攻擊者,往往能重建後續的輸出。基於 Math.random 所建立的密碼,雖然在螢幕上看起來隨機,但實際值遠低於其長度所暗示的程度。密碼學安全 RNG (CSPRNG) 的設計目標,是在即使觀察者知道演算法並看過先前的輸出,依然無法預測其結果。
瀏覽器透過 Web Crypto API,以 crypto.getRandomValues 形式提供 CSPRNG,這正是在分頁中執行的密碼產生器應使用的正確來源。由於呼叫在本機進行——你的裝置擲骰子、頁面組裝字串、結果從未離開瀏器——因此沒有可調閱的伺服器紀錄、沒有會外洩的分析管道,也沒有等待被攔截的上傳動作。關閉分頁後,密碼便徹底消失。正是這種純粹本機執行的設計,讓一個免費的線上工具得以保護隱私:隨機性來自你自己的機器,而結果僅存在於你的剪貼簿中,直到你將它貼到由你掌控的地方為止。
在你的瀏覽器中產生一個免費的 16 字元密碼
整個流程在頁面開啟後只需幾秒鐘。密碼產生器將長度設定、字元開關、熵值顯示與複製或重新產生按鈕整合在同一個畫面,因此無需安裝任何東西,也不必建立帳號。
- 在瀏覽器中開啟密碼產生器。使用滑桿或數字方塊將長度設定為 16。
- 啟用四個字元開關:大寫 (A–Z)、小寫 (a–z)、數字 (0–9) 以及符號 (可列印集合,例如 !@#$%^&*)。關閉任何一項都會縮減字元池與熵值。
- 選擇性:勾選「排除易混淆字元」以移除 0、O、1、l 及其他相似的易混淆字元,以便日後需要手動輸入密碼。這會犧牲幾位元熵值以換取可用性。
- 觀察熵值顯示更新。當四種類型全部開啟且長度為 16 時,應顯示約 103 位元,並將結果標示為「強」。
- 點擊「產生新密碼」以擲出新的字串,再點擊「複製」將其放入剪貼簿。
- 將密碼直接貼到註冊表單或密碼管理工具的欄位中,然後關閉分頁。該密碼不會存在於其他地方。
如何解讀強度計與熵值估計
一個有用的強度計,不只是為密碼標上「強」或「弱」,更會顯示標籤背後的數字。密碼產生器使用相同的 Shannon 風格公式回報以位元為單位的熵:長度 × log₂(字元池大小)。這個數字決定了擁有遭竊雜湊檔案的攻擊者,需要花費多少工作量才能找出你的密碼。包括 OWASP Authentication Cheat Sheet 在內的現代指引,皆將超過約 80 位元的密碼視為足以應付大多數帳號,並將 100+ 位元推薦用於保護敏感資料或管理權限的情境。
強度計僅是參考,並非保證。一個 103 位元的隨機字串在離線破解上確實極為困難,但若底層隨機性薄弱,即使長度達 100 個字元也於事無補。這正是為何真正該被檢視的並非顯示出來的長度,而是隨機性的來源。當強度計顯示 103 位元,而頁面使用的確實是真正的 CSPRNG,這兩個數字便能相互強化;反之,若某個產生器顯示高熵值,實際上卻暗中取自 Math.random,那麼所顯示的強度便是謊言——可見的長度雖然沒有改變,但每個字元的實際不可預測性已然崩潰。
無偏差選擇在背後如何運作
即便擁有完美的 CSPRNG,將隨機數轉為字元的方式仍可能在不知不覺中削弱輸出。最直觀的做法——取一個 32 位元隨機整數,對字元池大小取模,再挑出該字元——會引入模偏誤(modulo bias)。只要字元池大小無法整除 2³²,某些字元被選中的機率就會略高於其他字元,這種偏斜會降低真實值,使輸出稍微更容易被預測。
密碼產生器透過拒絕抽樣(rejection sampling)避免這個問題:落在偏誤區段內的隨機值會被捨棄並重新擲取,如此字元池中每個字元都會以完全相同的機率被選中。接著,它會保證每個啟用的字元類型至少出現一次,使「完整載入」的密碼絕不會意外地變成 16 個小寫字母,最後再以 Fisher–Yates 演算法將整個結果打散洗牌。這個洗牌步驟至關重要——少了它,每個類型的保證字元會永遠固定落在同一個位置,知道實作方式的攻擊者便能利用這個規律。經過 Fisher–Yates 洗牌後,這些保證字元會分散到字串各處,不再留下位置指紋。
為你的密碼搭配管理工具與良好習慣
一個強健的隨機密碼,只有在每個網站皆獨一無二、且儲存在你信任的地方時,才真正有用。NIST SP 800-63B 與 OWASP Authentication Cheat Sheet 等現代指引,皆偏好長密碼或密碼片語勝過強制的複雜度規則,並建議將候選密碼與已知的遭外洩密碼清單進行比對。實務上的結論是:為每個帳號使用一組夠長、隨機且獨一無二的密碼,並存放於密碼管理工具中,而非記在腦中或重複使用。一旦管理工具保存了這些字串,你只需要記住一組夠強的主密碼——而這組主密碼,正是一個本機執行的 16 字元密碼產生器擅長產出的秘密類型。
幾個習慣能讓整個系統保持健全。僅在有理由懷疑主密碼外洩時,才應極少數地更換主密碼。絕不要把產生的密碼貼到聊天視窗、螢幕圖,或會同步至雲端的筆記應用程式中。將強度計視為健全性檢查而非最終判決:真正的安全性來自 CSPRNG、無偏差的選擇,以及兩者之間純粹本機的執行路。當這三個環節到位時,「free 16-character password」就不再只是搜尋關鍵字,而成為你為每個新帳號都能重複使用的固定做法。
如需更深入的說明,請參在本機將 SHA256 雜產生為十六進位或 Base64。
如需更深入的說明,請參閱檢查你的密碼強度:本機五級稽核。