一個由全部四種字元類型(大寫、小寫、數字和符號)組成的 16 字元密碼,約具有 103 位元的熵,這正是現代指引認為對鎖定檔案抵禦離線暴力破解攻擊為「強」的門檻。要為 PDF 設定密碼包含兩個不同的步驟:產生一組強密度的密碼,然後將該密碼套用於加密文件。在您自己的設備上以密碼學安全亂數產生器產生的隨機字串,是最強可能性的第一步,因為人類發明的密碼總是聚集在可預測的模式周圍。像 Password Generator 這樣的工具會在本地產生均勻的隨機字串——使用瀏覽器內建的 crypto.getRandomValues 作為其熵來源——因此密碼永遠不會離開您的分頁。第二步是機械式的:將該字串貼到您的 PDF 檢視器加密對話框的密碼欄位中,檔案就會以 AES 鎖定。在您自己的工具中於本地完成這兩個步驟,就是讓整個工作流程保持私密的關鍵;沒有任何資訊會傳送到可能記錄、外洩或儲存它的第三方。

「為 PDF 設定密碼」實際上涉及什麼
這個說法涵蓋兩個容易被混為一談的獨立問題:產生一組強密度的密碼,以及使用該密碼來加密檔案。搜尋者經常帶著「一個工具就能兩者兼顧」的想像來到這裡——在某些平台上確實可以,Adobe Acrobat 的密碼保護對話框可以立即為您產生密碼——但就地產生的密碼通常很短,而且背後的演算法也不透明。將工作分成兩個階段,讓您能獨立控制每一半,並讓您在接觸文件之前就能驗證密碼的強度。
對於前半段——產生密碼——您需要的是能取得的最強隨機字串,裡面不能帶有人為模式。對於後半段——套用密碼——您需要的是使用現代加密演算法(AES-128 或 AES-256)以及已知基於密碼的金鑰衍生函式的加密工具,讓產生的 PDF 能抵禦離線破解。Password Generator 處理前半段。後半段則取決於您的 PDF 檢視器。
這種分離對隱私也很重要。如果密碼是在同一個上傳您文件的工具內部產生的,廠商就能同時看到兩者。如果密碼是在您的瀏覽器中本地產生,然後再貼到另一個獨立的桌面應用程式中,則兩邊都不會看到對方的資料。這就是「產生密碼並鎖定 PDF」組合服務與雙工具工作流程之間的架構差異。
密碼強度是如何衡量的
強度不是感覺。它是一個數字——熵的位元數——由您可以控制的兩個輸入所決定:字串長度,以及您從中抽取的字元池大小。公式如下:
熵(位元)= 長度 × log₂(字元池大小)
字元池是產生器被允許從中選取的相異符號集合。在同時啟用大寫、小寫、數字和符號的情況下,字元池包含 86 個字元,因此每個字元貢獻約 6.43 位元(因為 log₂(86) ≈ 6.426)。這就是您見過的每個「此密碼很強」強度計量背後的關聯性。
| 字元池名稱 | 包含的字元 | 字元池大小 | 每字元位元數 |
|---|---|---|---|
| 僅小寫 | a–z | 26 | ≈ 4.70 |
| + 大寫 | a–z, A–Z | 52 | ≈ 5.70 |
| + 數字 | a–z, A–Z, 0–9 | 62 | ≈ 5.95 |
| 全部四種類型 | + 常見符號 | 86 | ≈ 6.43 |
| 全部四種,排除易混淆字元 | 移除 0, O, 1, l | 82 | ≈ 6.36 |
請按方向閱讀此表格:您加入的每一種額外字元類型,大約為每字元位元數貢獻一個固定的增量;而您附加的每多一個字元,所貢獻的熵又比上一步更多。這就是為什麼長度加倍所增加的量,遠大於切換字元集——也是為什麼長度是最強的單一槓桿。
計算範例——完整 86 字元池,長度 16:
- log₂(86) ≈ 6.426
- 16 × 6.426 = 102.816
- 四捨五入:≈ 103 位元
正是這一個計算,讓 16 字元的全類型密碼能強健地抵禦離線暴力破解攻擊。作為經驗法則,低於 60 位元為弱,60 到 100 為中等,100 以上為強。將長度加倍為 32 字元,大約會使位元數再次倍增,將密碼遠遠推到任何現有攻擊者都無法暴力破解的程度。透過加入大寫於小寫之上以將字元池大小加倍,只會為每字元增加一個固定增量。長度才是王道。
在瀏覽器中產生密碼
- 在瀏覽器中開啟 Password Generator。使用滑桿或數字框設定長度(越長越強——16 以上是個不錯的預設值)。
- 移動長度滑桿或在數字框中輸入。對於重要的 PDF,請將其設為 16 或以上;20 是個舒適的預設值。
- 切換您要使用的字元類型。啟用大寫、小寫、數字和符號可最大化字元池;停用任何一種類型都會減少熵。
- 如果您需要手動閱讀或輸入密碼,請保持「排除易混淆字元」為開啟,這樣 0、O、1 和 l 就會被移除。如果由密碼管理員代為輸入,您可以關閉此選項以維持字元池為 86。
- 查看即時更新的熵與強度計量。顯示的數字就是來自上述公式的位元值。
- 按一下產生(Generate)以取得一組新字串,或按複製(Copy)將目前的字串放到剪貼簿。
- 將複製的密碼儲存到您的密碼管理員中,歸在您即將上鎖的 PDF 條目下。
在底層,產生器做了三件對輸出品質至關重要的事。首先,隨機性的來源是瀏覽器的 CSPRNG(crypto.getRandomValues),而不是速度快得多但可預測的 Math.random——此區別記載於 MDN。其次,字元選取使用拒絕抽樣(rejection sampling)而非天真的取模運算,因此所選字元池中的每個字元都是以完全相等的機率被選取,不會有取模偏差扭曲分佈。第三,會保證至少包含每個選定類型的一個字元,並使用 Fisher–Yates 演算法進行洗牌,以確保這些保證出現的字元不會固定落在攻擊者可能利用的位置上。
將產生的密碼套用到您的 PDF
產生一組強密碼只是工作的一半。另一半是使用它來加密 PDF,而您在這個步驟選擇的工具取決於您的平台。如需從零開始建立難以破解的 PDF 密碼的深入逐步說明,請參閱建立難以破解的 PDF 密碼的逐步指南。一般的工作流程在各家檢視器中都相同。
Adobe Acrobat(桌面版)。開啟檔案,然後選擇 檔案 → 內容 → 安全性。在「安全性方法」下,選擇「密碼安全性」,將相容性等級設為 Acrobat X (PDF 1.7) 或更新版本,使文件以 AES-256 加密,在兩個密碼欄位中輸入您產生的字串,然後按一下確定。以相同名稱儲存檔案就完成了。
macOS 上的 Preview。開啟 PDF,然後 檔案 → 匯出 → PDF。勾選「加密」框,並在提示時輸入密碼。Preview 預設使用 AES-128,這對幾乎所有實際威脅都已足夠;產生的檔案與每個現代閱讀程式都相容。
LibreOffice Draw 或 Writer。開啟或匯入文件,然後 檔案 → 匯出為 PDF。在對話框中,切換到「安全性」分頁,並以 PDF/A 或 PDF 1.6 作為目標格式設定使用者密碼。LibreOffice 在以此方式設定時會套用 AES-256。
僅限瀏覽器的工作流程。如果您不想安裝桌面應用程式,有幾個信譽良好的瀏覽器內工具使用 WebCrypto 在用戶端加密 PDF。它們接受您自行提供的密碼字串——這正是您為什麼要先準備好一組強密碼的原因。將 Password Generator 的輸出貼到密碼欄位中,提供檔案,然後下載加密後的結果即可。
無論您選擇哪種方式,您貼上的密碼都是唯一的關鍵。任何擁有該字串的人都能開啟檔案,因此請以對待一般帳號密碼的同樣紀律來對待它——對本文件唯一、只複製一次、儲存在密碼管理員中,且絕不在多個檔案間重複使用。
為什麼 CSPRNG 勝過人為產生的密碼
人類不是亂數產生器。當被要求發明一組密碼時,人們傾向於依賴日期、字典中的單字、姓名和鍵盤走位——這些都是密碼破解器明確以變形規則建模的模式。四字詞組密碼遠勝於 10 字元的亂碼拼湊,但一串來自大型池的真實隨機字串又更好,因為攻擊者無法為其擬合任何模型。
您的瀏覽器透過 crypto.getRandomValues 公開的 CSPRNG,是設計用來從實體和作業系統的熵來源——鍵盤時序、滑鼠移動、磁碟活動,以及在可用時的專用硬體——產生不可預測的輸出。其輸出無法像 Math.random 的序列那樣,從先前的輸出重現。正是這種不可預測性,使得產生的密碼適合作為密鑰。根據 MDN,該函式明確是為密碼學用途而設計的,這就是您希望用來支續 PDF 密碼的契約。
Password Generator 使用的 86 字元池,涵蓋了典型 PDF 檢視器在密碼欄位中接受的所有可列印符號。兩階段的品質控制——用於無偏差選取的拒絕抽樣,以及用於洗牌保證類型位置的 Fisher–Yates——意味著其輸出已盡可能接近現代瀏覽器程式碼所能達成的均勻隨機樣本。這就是這就是為什麼該工具所顯示的熵數字是攻擊者不確定性的真實下界,而非行銷估算。
複製密碼後如何維持其隱私
本機產生是隱私的起點,不是終點。一旦你點擊複製,該字串就會進入你的剪貼簿——任何在你裝置上讀取剪貼簿的其他應用程式都能讀取它,包括螢幕閱讀器和剪貼簿管理員。請將它貼到你的密碼管理員,或直接貼到 PDF 檢視器的密碼欄位,然後關閉產生器分頁。該密碼不會存在於其他地方:不在伺服器上,不在記錄檔中,不在瀏覽器紀錄裡(產生器在記憶體中執行,絕不會導覽),也不在你的磁碟上。
就長期儲存而言,密碼管理員是標準答案。OWASP 的身分驗證速查表所提出的現代指引,將儲存在管理員中的唯一、隨機產生的密碼,視為任何帳號的建議基準,而相同的邏輯也適用於文件層級的密碼。PDF 檔案本身在沒有密碼的情況下將無法讀取,而管理員則成為唯一實際可用的方式來取回它。
如果你不使用管理員,請將密碼寫在紙上,並與實體文件一起存放——這對純紙本工作流程來說是一種可行的做法,但一旦紙本遺失,密碼也會跟著遺失。數位工作流程則受益於管理員,因為密碼可以是 16 個字元以上、純粹的亂碼,根本不可能記住,而管理員會幫你處理輸入。
關閉瀏覽器分頁會捨棄產生器的狀態。重新開啟工具會產生不同的字串。這是設計上的刻意安排:沒有殘留,就不會外洩。
如果你正在權衡各種選項,如何在不上傳密碼的情況下測試密碼強度對此有詳細說明。