密碼產生器範例應顯示隨機字串、其背後的熵,以及產生該字串的設定,而不是將可預測的樣式包裝成安全性工具。這款 密碼產生器會先在您的瀏覽器中使用加密安全的隨機數產生器建立候選字串,再讓您選擇長度與字元類型。當四種類型全部啟用時,16 個字元是合理的起始設定;顯示的估算值隨後會反映可能字串數量的大幅增加。範例格式本身並非憑證:實際密碼應針對特定帳戶產生、直接複製到密碼管理器,且絕不重複使用。由於產生作業在本機進行,結果不會上傳至伺服器、寫入伺服器記錄,也不會由網站儲存。該結果會留在目前的瀏覽器分頁中,直到您複製它;關閉分頁即會捨棄它。實際而言,這項工具負責難以預測的隨機選取,而由您決定密碼長度、允許的字元,以及是否排除視覺上相似的字元,以便更容易手動輸入。

password generator example
密碼產生器範例:建立強固的隨機密碼

實用的密碼產生器範例應顯示什麼

單憑看似隨機的字串並不算完整範例。實用的密碼產生器範例會標示長度、指出已啟用的字元類型,並提供回報的熵值所在位置。這些細節能說明字串背後的條件,同時不公開可重複使用的憑證。

僅為說明用途,16 個字元的結果可能如下:V7!qM2#zR9@pL4$K。這是假想格式,並非可供使用的密碼。它包含大寫字母、小寫字母、數字與符號,同時避開容易混淆的字元 0、O、1 和 l。隨機產生作業每次執行都可能產生完全不同的字串,因此這個範例傳達的是設定,而非可預測的序列。

  • 長度:密碼可使用的字元位置數量。
  • 字元池:可能出現的大寫字母、小寫字母、數字與符號選項。
  • 熵:結果中隨機性的預估位元數。
  • 處理方式:密碼在本機產生,並留在瀏覽器分頁中直到被複製。

以四個步驟產生密碼

請將這項產生器視為簡短的設定流程,不要未檢查結果就接受所有預設值。

  1. 設定長度。使用滑桿或數字方塊選擇密碼長度。較長的密碼具有更多可能的排列方式,因此 16 或更多是重要帳戶的良好預設值。
  2. 選擇字元類型。依需求切換大寫字母、小寫字母、數字與符號。如果必須手動輸入,也可以排除 0、O、1 和 l 等視覺上容易混淆的字元。
  3. 檢視估算值。複製前先讀取顯示的強度與熵。請採用這項工具的經驗法則:低於 60 位元為弱、60–100 為中等,100 以上則可抵抗離線暴力破解攻擊。
  4. 複製或再次產生。候選字串符合需求時,請按一下「複製」;或選擇「產生新密碼」以建立新的候選字串。如果網站已明文規定字元限制,複製前請先確認。

複製前檢視結果,可以避免薄弱設定或不想使用的字元進入目標位置。請產生另一個候選字串,不要手動修改字元,因為人工編輯可能降低產生器所營造出的不可預測性。

本機隨機性如何產生字串

這項產生器使用瀏覽器的加密安全隨機數產生器 crypto.getRandomValues(),而非 Math.random()。兩者的差異很重要,因為 Math.random 並非為保護密Secrets 而設計,先前的輸出可能讓後續數值更容易預測。MDN 的 crypto.getRandomValues() 文件說明了用來取得加密強隨機值的瀏覽器 API。

單靠安全隨機性並不保證字元選取完全均勻。如果以單純的模運算將隨機整數對應至字元集合,當集合大小無法整除隨機範圍時,可能產生模偏差。這項產生器改用拒絕取樣:落入偏差餘數範圍的值會被捨棄並重新抽取。如此一來,所選字元池中的每個字元都有相同的被選取機率。

這項工具還保證每個已選類型至少出現一個字元,並使用 Fisher–Yates 演算法將完成的字串打亂。洗牌可避免這些保證出現的字元固定在特定位置,讓攻擊者無法利用該樣式。所有處理都在本機進行,因此產生器絕不會傳輸、記錄或儲存密碼。

選擇長度與字元類型

實務上最強的結果,來自在充足長度、廣泛字元池與目標帳戶相容性之間取得平衡。這些設定對估算值的影響各不相同:

設定對密碼的影響實務選擇
長度增加字元位置並提高熵。重要帳戶請使用 16 或更多字元。
字元類型更廣泛的字元池可提供更多可能的字串。當目標位置接受時,啟用全部四種類型。
排除容易混淆的字元略微縮小字元池,但更容易手動輸入。當視覺混淆造成疑慮時,排除 0、O、1 和 l。
強度與熵顯示反映長度與所選字元池。複製候選字串前先檢視估算值。

回報的估算值使用公式 熵 = 長度 × log₂(字元池大小)。啟用大寫字母、小寫字母、數字與符號後,字元池包含 86 個字元。對於 16 個字元的密碼,顯示的估算值計算如下:

16 × log₂(86) ≈ 103 位元

此結果落在工具的強固範圍內。長度是影響最大的因素,因為每增加一個位置,都會倍增可能字串的數量;這也是較長的隨機密碼可能比填滿符號卻短得多的密碼更強的原因。排除容易混淆的字元,是以少量熵換取更易閱讀;若未檢查估算值就移除字元類型,則可能更大幅削弱結果。

產生後使用密碼

請將結果直接複製到與該帳戶關聯的密碼管理器。為每項服務分別儲存產生的密碼,避免其中一項憑證外洩時讓多個帳戶陷入風險。本機產生可在複製前保護密碼;一旦貼入註冊表單、變更密碼表單或其他目標位置,該目標位置就會處理所提交的內容。

NIST SP 800-63B 與 OWASP Authentication Cheat Sheet 的現代指南支持採用長密碼或 passphrase,而不是僵硬的複雜度規則,並建議將候選密碼與已知外洩密碼清單進行比對。產生器可提供長度與隨機性,但您仍需要獨特的結果、適合的目標位置,以及安全的儲存方式。如果服務提供外洩或政策檢查,請在儲存密碼前使用該功能。

削弱產生密碼的錯誤

即使字串已適當隨機化,處理方式仍可能削弱結果。請避免以下常見錯誤:

  • 重複使用上方說明用的字串。那是範例,而非 intended for an account 的密碼。
  • 到處使用同一組強密碼。為每項服務產生並儲存獨特的結果。
  • 未經檢查就移除過多字元類型。縮小字元池可能降低熵。
  • 縮短密碼以補償複雜度。增加字元通常比更換字元集合具有更大幅度的影響。
  • 將結果貼到聊天、電子郵件或問題追蹤系統。只有在意圖使用的密碼欄位或密碼管理器準備就緒時才複製。

完整流程很直接:設定長度與字元類型、讀取估算值、選擇「複製」,再將結果儲存在適當的密碼管理器中。產生器負責難以預測的選取;審慎檢視,以及每項服務使用不同密碼的處理方式,便完成了整個程序。