跳到主要內容
楓葉工具箱 ToolMaple

開發最後更新:

密碼產生器

產一組夠亂的密碼:長度和字元自己挑,順便看強度夠不夠。

類型
產生的密碼
—
強度:極強entropy ≈ 102 bits
字元集

亂數密碼產生器在做什麼?強度又怎麼看

自己想的密碼(生日、寵物名、123456)容易被「字典攻擊」秒破。隨機產生器避開人類的記憶習慣,用真亂數產出無規律字串,把破解時間從「幾秒」拉到「宇宙年齡」等級。

本工具用瀏覽器原生的 crypto.getRandomValues() 產生亂數,是 W3C 標準的密碼學等級隨機性,比 JavaScript 的 Math.random() (可預測、不適合安全用途)強得多。密碼完全在瀏覽器內產生,不送到任何伺服器。

把這件事交給機器,是因為人類做不到隨機。放著讓我們自己想,產出來的多半是一個單字、字首大寫、結尾加一個數字和一個驚嘆號,而攻擊者很清楚這個形狀。他們不會從頭照順序試每一種組合,而是先跑外洩密碼清單與常見規律,所以把 a 換成 @ 沒有用,破解工具試這種替換已經試了幾十年。

密碼強度怎麼判斷?

學界用「Entropy(資訊熵)」量化,單位 bit,值越高越難暴力破解:

  • < 40 bits:弱(幾秒到幾分鐘可破)。常見字典詞、短密碼
  • 40-60 bits:一般(線上服務尚可、重要帳號不足)
  • 60-90 bits:強(重要帳號 OK)
  • > 90 bits:極強(金融、企業 root 帳號標準)

計算公式:log2(字元種類數 ^ 密碼長度)。本工具的符號集是 26 個,四類全開時字元種類是 88 種,16 字元約 103 bits,每秒猜 1 兆次,全部試完也要四千億年左右。預設勾著的「排除相似字」會拿掉 0、O、o、1、l、I 六個,剩 82 種,16 字元約 102 bits。

兩個數字在同一個等級,所以不必為了幾 bits 去挑字元集:長度比複雜度有用得多,20 字元純小寫(約 94 bits)就比 8 字元四類全開(約 52 bits)難破。

哪種帳號用多長、開哪幾類字元

  • 電子信箱:長度 20、四類全開。信箱可以重設其他所有帳號的密碼,值得用你最強的一組,再加上兩步驟驗證。
  • 網銀、證券下單、支付:長度 16 到 20,英數加符號。台灣不少銀行與券商的密碼欄位有長度上限、或只收特定幾個符號,以該行註冊表單當下的規則為準,用它肯收的最長長度產一組。
  • 密碼管理器的主密碼:不要用隨機字串,改用五到六個隨機單字組成的 passphrase,上方類型切到「英文單字」就能產一組。這是少數你必須背下來、天天手打的密碼。
  • Wi-Fi:長度 20 以上,只勾大小寫與數字、關掉符號、勾排除相似字。符號在電視、遊戲主機、掃地機器人上非常難打,而 20 個英數字已經約 119 bits,勾排除相似字也還有約 116 bits。
  • 遊戲帳號:長度 16、英數即可。主機手把打符號很痛苦,部分啟動器也還在擋符號,用長度把強度買回來。
  • 論壇、購物站、一次性註冊:維持預設的 16 全開就好。這類站最常外洩,重點是這組密碼沒有用在別處,而不是它有多長。
  • 要唸出來或要用手打的:一定勾「排除相似字」,不要讓對方猜大寫 O 還是數字 0。

實戰教學:產一組密碼,然後好好把它存起來

  1. 拉長度滑桿:一般帳號 16 起跳,重要帳號拉到 20。
  2. 四個字元類別維持全開。只有在你已經確定該網站不收符號時,才取消勾選符號。
  3. 看一下強度那一行,目標是「強」或「極強」,也就是 60 bits 以上。
  4. 按「複製」,貼進網站的密碼欄,同時在密碼管理器開一筆新紀錄貼進去。先把管理器那筆存檔再送出註冊表單,萬一註冊失敗才不會連密碼一起弄丟。
  5. 人已經在安全設定頁了,順手把兩步驟驗證一起打開。

密碼管理器是大家最容易跳過、卻讓整套做法成立的那一步:每個帳號都用不同的隨機密碼,只有在別的東西幫你記住的前提下才可行。用哪一家都好,包括瀏覽器或手機內建的那個。

實戰教學:產一組 Wi-Fi 密碼

  1. 長度拉到 24、取消勾選符號,留下大小寫與數字並勾「排除相似字」。WPA2 與 WPA3 的個人金鑰收 8 到 63 個可列印字元,24 還在範圍內很多。
  2. 按「複製」,貼進路由器管理頁的無線安全設定。
  3. 套用之前先把它存進密碼管理器、記下是哪一個網路名稱,因為一套用你自己就會先被踢下線。
  4. 每台裝置重新連一次。印表機和遊戲主機就是符號要關掉的原因。
  5. 要給客人用的話,在訪客網路另外產一組,做成 Wi-Fi 的QR Code讓對方相機掃一下就連上,不用把密碼唸出來。

怎麼貼進欄位,貼完怎麼清剪貼簿

最好的做法是根本不要動到剪貼簿:讓密碼管理器的擴充功能或系統的自動填入幫你填,密碼就不會留在其他 App 讀得到的地方。真的需要複製時:

  • iPhone、iPad:開了接續互通的話,剪貼簿會同步到你的 Mac,貼完隨手複製一段無關的文字蓋掉它。
  • Android:Gboard 會保留剪貼簿記錄,沒釘選的項目大約一小時後移除;想早點刪掉,點鍵盤工具列的剪貼簿圖示手動刪。
  • Windows:有開剪貼簿記錄的話,Win+V 會列出你複製過的所有東西,裡面有「全部清除」。
  • Mac:剪貼簿只留一筆,複製別的東西就會蓋掉;通用剪貼簿會把它分享給同一個 Apple 帳號的鄰近裝置。
  • 所有裝置共通:不要用 LINE、Messenger、email、記事本或工單把密碼傳給別人或傳給自己的另一台裝置。要嘛用密碼管理器的同步與分享功能,要嘛當面輸入。

網站不肯收你這組好密碼的時候

NIST 的 SP 800-63B 要求服務至少接受 64 個字元、接受所有可列印 ASCII 字元(含空白)、不要規定必須含哪幾類字元,而且要允許貼上。沒照做的網站失敗的方式都很好認:

  • 長度上限 12、16 或 20:改成它允許的長度重產一組。危險的是靜默截斷,表單收下 30 個字元、資料庫只存 20 個。剛設好的密碼登不進去,就試試看它的前 16 或前 20 個字元。
  • 只接受特定符號:把符號那一格取消勾選,改用多四個字元的長度換回來,結果比在受限符號集裡硬湊更強。
  • 不接受空白:passphrase 被擋通常就是這個原因,把單字之間改成連字號。
  • 禁止貼上:改用密碼管理器擴充功能的自動填入,那條路不經過剪貼簿。真的不行就產一組你打得準的短一點的,也不要回頭用舊密碼。
  • 大小寫不分:少見而且不會寫在說明裡。如果大小寫打錯也能登入,就把那個帳號當成低安全性的來管,靠兩步驟驗證補。
  • 安全提示問題:用產生器產一組字串當答案、存進密碼管理器,不要填真實資料。母親的姓氏、國小校名、第一台車這些東西在網路上查得到。

限制與隱私

沒有人幫你留底。密碼是本機產生的,不傳輸、不儲存,關掉分頁就找不回來,所以請先存進密碼管理器再關頁面。

Entropy 是上限,不是保證。一組 102 bits 的密碼同時用在三個網站,價值等於其中最弱的那個;而且再高的 entropy 也擋不住你把它打進釣魚頁面。不重複使用、加上第二道驗證,效果都比長度從 20 加到 30 更實在。

取餘數的微小偏差。隨機字元模式的每個字元是拿一個 32 位元亂數對字元集大小取餘數挑出來的。2 的 32 次方不是 82 或 88 的整數倍,所以有幾個字元出現的機率會非常微幅地高一點,差距大約在億分之一的等級,實務上沒有影響。英文單字模式改用拒絕取樣,落在多出來那一截的亂數直接丟掉重抽,每個單字的機率完全相同。

長度上限 64。這個工具的滑桿最長 64 個字元,再長對一般用途也沒有意義;真正需要更長金鑰的場景(例如 API secret),用該平台自己產生的那組。

常見問題

跟瀏覽器內建的密碼建議比,差在哪?

Chrome / Safari / Firefox 內建的密碼建議也是用 crypto random,安全性相同。差別是這裡可以調整字元類型與長度,給有特殊規則的網站用(例如某銀行只允許特定符號)。

密碼長度多少夠?

16 字元起跳。一般線上服務 12 也行,金融 / 工作帳號建議 20+。長度比複雜度更重要——20 字元純小寫(log2(26^20) ≈ 94 bits)比 8 字元四類全開(≈ 52 bits)更難破。

passphrase(多單字密碼)好嗎?

好,適合要背、要親手打的那幾組,例如電腦登入與密碼管理器的主密碼。上方類型切到「英文單字(passphrase)」,工具會從 EFF 公布的 7,776 個英文單字表隨機挑字,每個字約 12.9 bits:4 個字約 52 bits、6 個字約 78 bits、8 個字約 103 bits。字表只有英文版,因為不少網站的密碼欄位只收英數字與符號。交給密碼管理器自動填入的帳號,用隨機字元比較短也比較強。

產出來的密碼會被記錄或上傳嗎?

不會。密碼是瀏覽器用 crypto.getRandomValues() 在你的裝置上產生的,沒有經過任何網路傳輸,也沒有被儲存或記錄。分析只記錄「有人產了一組密碼」以及長度設定,還有複製鈕被按了幾次,密碼本身永遠不在裡面。反過來說,這也代表沒有人幫你留底,關掉分頁就找不回來,請先存進密碼管理器再關頁面。

這組密碼真的夠亂嗎?跟 Math.random 差在哪?

crypto.getRandomValues() 是瀏覽器提供給密碼學用途的亂數來源,種子來自作業系統,外人無法從已經看過的輸出推回下一組;Math.random() 只是速度快的偽亂數,狀態被看穿之後後面的輸出是可以預測的,不適合拿來產密碼。本工具用的是前者。

密碼要多久換一次?

NIST 的數位身分指南建議不要強迫定期更換,因為被逼著換的人會選更糟的密碼,或只是把結尾的數字加一。該換的時機是有證據的時候:服務公告外洩、你把密碼給過別人、或是在可能被側錄的裝置上打過。隨機產生的字串不會出現在外洩密碼清單裡,自己想的密碼則有機會。

「排除相似字」要不要勾?

要手動輸入或唸給別人聽的密碼就勾,例如 Wi-Fi 密碼、要在電視或遊戲主機上打的帳號。勾了之後 0、O、o 與 1、l、I 會被拿掉,少了六個字元,16 位長度的 entropy 大約從 103 bits 降到 102 bits,實際上沒有差別。只會用密碼管理器自動填入、永遠不用人眼辨認的密碼,不勾也無妨。

資料來源

相關工具

隱私:密碼在你的瀏覽器裡用 crypto.getRandomValues() 產生,不會送到伺服器、不會被儲存也不會被記錄。分析只記錄產生了一組密碼與長度設定,以及複製鈕被按的次數,密碼本身永遠不包含在內。