使用方式
- 使用滑桿設定長度,或輸入確切字元數(4–128)。
- 選擇要包含的字元類型。如果網站只接受特定符號,請編輯符號清單。
- 您可以選擇排除容易混淆的字元;若網站有字元組成規定,請保持開啟「至少使用一次每種已選類型」。
- 複製單一密碼,或使用「全部複製」逐行複製所有密碼。按下「重新產生」即可產生新的一組密碼。
運作方式
每個字元都使用 crypto.getRandomValues 選取,這是瀏覽器內建的密碼學安全亂數產生器。此工具絕不使用 Math.random。若要從含有 n 個字元的字元池中選取字元,工具會產生一個 32 位元隨機數,並捨棄大於 n 的最大倍數的那段小範圍內的數值。這種拒絕取樣方式可避免取模偏差,確保字元池中的每個字元都有完全相同的機率被選中。
開啟「至少使用一次每種已選類型」時,工具會先從每種已選類型中各選一個字元,再從合併後的字元池填滿剩餘位置,最後使用相同的無偏亂數來源進行 Fisher–Yates 洗牌。如此一來,保證會出現的字元就不會總是排在開頭。
熵值是以 log2(字元池大小) × 長度計算。使用全部 89 個預設字元所產生的 16 字元密碼,熵值約為 103 位元;20 字元密碼則約為 129 位元。「至少使用一次每種已選類型」這項規則會稍微減少可能的密碼數量,因此實際熵值會比顯示的數字略低。強度標籤僅供參考:低於 28 位元為極弱,28–39 位元為弱,40–59 位元為普通,60–99 位元為強,100 位元以上為極強。熵值只適用於像這樣隨機產生的密碼,無法反映人自行設定的密碼強度。
範例
用於密碼管理器的密碼
保留預設設定(20 個字元,包含全部四種類型)。產生的密碼熵值約為 129 位元,遠遠超出猜測的可能性,而且密碼管理器會替您記住密碼。
不接受部分符號的網站
如果銀行只接受 !@#$%,請將符號清單改成這五個字元。字元池會縮小至 67 個字元,因此 16 字元密碼的熵值仍約有 97 位元。
需要在電視上輸入的 Wi-Fi 密碼
關閉符號並排除容易混淆的字元。排除 I、l、1、O、0 和 o 後,使用剩下 56 個英文字母和數字產生的 16 字元密碼,方便唸出來,也仍有約 93 位元的熵值。
常見問題
密碼應該設多長?
使用密碼管理器保護的帳戶,設定 16–20 個隨機字元就很足夠。如果您必須經常手動輸入密碼,使用較長的英文字母和數字組合會更容易輸入,安全性也可以和較短的符號密碼一樣高。
在網站上產生密碼安全嗎?
此頁面完全在您的瀏覽器中產生密碼,使用作業系統提供的安全亂數來源。密碼不會傳送至伺服器、儲存或納入分析。頁面載入後,即使中斷網路連線也能繼續使用。
為什麼排除容易混淆的字元會降低熵值?
熵值取決於每個位置可以使用多少種字元。移除字元會縮小字元池,因此每個字元增加的位元數會稍微減少。將密碼長度增加幾個字元即可彌補。
什麼是「取模偏差」?為什麼重要?
簡單的產生器會取一個隨機數,再用它除以字元池大小並取餘數。除非字元池大小能整除亂數範圍,否則某些字元出現的機率會略高。此工具會捨棄分布不均的尾端範圍並重新取數,因此每個字元都有相同的機率被選中。
隱私權
密碼使用 crypto.getRandomValues 在您的瀏覽器中產生,不會上傳、儲存、記錄或傳送至分析服務;系統只會記錄一筆匿名的工具使用事件。複製功能會使用您裝置的剪貼簿。