PDF 加密比其他文件格式更「诡异」——它有用户密码和所有者密码两套机制,安全性差异巨大。上周遇到一个案例:一份加密的 PDF 合同,打不开也打印不了,折腾了一下午终于搞定了。这篇文章把 PDF 密码恢复的技术细节彻底讲清楚。

PDF 加密的两种密码

PDF 的加密机制和其他文件格式最大的不同在于:它有两种独立的密码

用户密码(User Password / Open Password):
  作用:打开文件时必须输入
  效果:文件内容被加密,没有密码无法查看
  恢复难度:取决于加密算法版本
  这是真正意义上的「加密」

所有者密码(Owner Password / Permissions Password):
  作用:限制打印、复制、编辑等操作
  效果:文件可以打开查看,但不能执行受限操作
  恢复难度:★☆☆☆☆(几乎可以秒解)
  这不是真正的加密,只是一个「限制标记」

如何判断你的 PDF 是哪种密码?

场景 1:打开 PDF 时弹出密码输入框
  → 用户密码(需要正经恢复)

场景 2:可以打开查看,但打印按钮灰色/复制文字失败
  → 所有者密码(可以轻松移除)

场景 3:既需要密码打开,又有操作限制
  → 两种密码都设置了(先恢复用户密码,再移除所有者密码)

所有者密码:秒解方案

所有者密码不加密文件内容,只是在 PDF 元数据中设置了一个权限标记。有密码可以修改权限,没密码也可以直接移除。

方法 1:Ghostscript(命令行,免费)

# 安装 Ghostscript
# macOS: brew install ghostscript
# Ubuntu: sudo apt install ghostscript

# 移除所有者密码(重新生成 PDF)
gs -q -dNOPAUSE -dBATCH \
   -sDEVICE=pdfwrite \
   -dCompatibilityLevel=1.4 \
   -sOutputFile=unlocked.pdf \
   encrypted.pdf

# 原理:Ghostscript 读取 PDF 内容后重新生成一个新的 PDF
# 新 PDF 不包含任何权限限制

方法 2:qpdf(命令行,免费)

# 安装 qpdf
# macOS: brew install qpdf
# Ubuntu: sudo apt install qpdf

# 移除所有加密
qpdf --decrypt encrypted.pdf unlocked.pdf

# 如果同时有用户密码,需要提供密码
qpdf --password=yourpassword --decrypt encrypted.pdf unlocked.pdf

方法 3:在线工具

各种在线 PDF 工具(如 ilovepdf.com、smallpdf.com)都可以一键移除所有者密码限制。原理和 Ghostscript 一样——读取内容后重新生成。