PDF 加密

设密码/权限控制

419 次访问
PDF ENCRYPT

PDF 加密

设置打开密码 + 权限控制 · 浏览器本地处理

🔒
点击 / 拖拽 PDF 文件
⚠ 注意:pdf-lib 浏览器版仅支持基础密码标准(RC4-40 兼容性最广)。对于政府 / 银行级别 AES-256 加密需要桌面 Adobe / qpdf 工具。本工具适用于一般保护场景。

关于本工具

了解工具定位 · 使用场景 · 对比优势

为 PDF 文件设置打开密码或权限密码,限制打印、复制、编辑等操作。需要保护合同、报告、个人资料的办公人员、学生或企业用户,上传文件后选择密码类型并输入密码,点击加密即可下载加密后的 PDF。文件上传后由后端处理,处理完成后自动删除,不留存。

使用场景

📄

合同标书分发

投标负责人需要将带有报价和商业条款的标书 PDF 分发给多家供应商。直接发送明文文件存在信息泄露风险,对方内部人员可随意转发、复制。使用本工具设置打开密码,并限制打印和复制权限,确保只有授权供应商能查看内容,且无法二次传播,满足招投标流程的保密要求。

🎓

内部培训资料

HR 或培训经理制作了包含薪酬结构、绩效考核制度的员工手册 PDF。为防止资料流出后被竞争对手获取,或员工随意分享到外部群组。通过本工具为文件添加打开密码,并禁止编辑与打印,确保资料仅限内部员工在限定设备上阅读,保护公司核心管理信息。

🔒

客户隐私报告

咨询顾问或审计师完成了一份包含客户财务数据和业务细节的 PDF 报告。在通过邮件或云盘发送给客户时,明文附件容易被截获。使用本工具设置一个只有客户项目经理知晓的强密码,并限制内容复制,确保即使邮件被盗,报告也无法被第三方打开和利用。

📑

电子合同归档

法务或行政人员需要将签署完成的电子合同 PDF 存入公司档案系统。为防止内部非授权人员随意查阅或修改合同条款,使用本工具为归档文件设置权限密码,仅允许指定法务或高管账号持有者打开,并禁止修改内容,确保合同的法律效力与完整性。

🏫

学术论文审稿

期刊编辑或导师需要将待审的论文 PDF 发送给多位盲审专家。为防止审稿人之间互相传阅、或提前泄露论文内容。通过本工具设置一个临时密码,并限制打印和文字复制,确保每位审稿人只能独立阅读,维护双盲审稿的公平性与保密性。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Smallpdf)传统方法
数据隐私纯浏览器处理,文件不上传服务器上传至云端服务器处理依赖本地软件,文件在本地
处理速度1-3 秒内完成取决于上传/下载速度,通常 10-30 秒取决于软件启动和操作速度
离线可用完全离线,不依赖网络必须联网完全离线
大小限制取决于浏览器内存,通常 100MB 以内免费版通常有 10-50MB 限制取决于本地软件,通常无限制
收费模式完全免费免费版有次数限制,高级版需付费需购买正版软件或使用盗版
注册要求无需注册或登录免费版需注册账号无需注册
操作门槛拖拽文件即可,零学习成本操作简单,但需处理上传/下载流程需安装软件并学习其操作界面

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传 PDF 文件,单文件 ≤ 50MB,支持多文件批量上传
  2. 输入打开密码(6-32 位),用于限制文档访问
  3. 勾选权限选项:禁止打印、禁止复制、禁止编辑(可选)
  4. 点击「开始加密」按钮,后端处理完成后自动弹出下载

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
密码:123456 权限:无已加密 PDF,打开需密码 123456,无其他权限限制典型场景:仅设置打开密码,保护文件不被查看
密码:abc!@# 权限:禁止打印、禁止复制已加密 PDF,打开需密码 abc!@#,禁止打印、禁止复制内容典型场景:限制文档被二次分发或编辑
密码:(空) 权限:禁止打印、禁止修改已加密 PDF,无打开密码,但禁止打印、禁止修改内容边界 case:不设打开密码,仅限制操作权限
密码:a 权限:无已加密 PDF,打开需密码 a,无其他权限限制边界 case:单字符密码,测试最短密码长度
密码:1234567890123456789012345678901234567890 权限:无已加密 PDF,打开需密码 1234567890123456789012345678901234567890,无其他权限限制边界 case:40 字符超长密码,测试输入上限
密码:密码 权限:禁止打印、禁止复制、禁止修改已加密 PDF,打开需密码 密码,禁止打印、禁止复制、禁止修改易错 case:中文密码,部分工具不支持,需确认兼容性
密码:123456 权限:禁止打印、禁止复制、禁止修改、禁止注释已加密 PDF,打开需密码 123456,禁止打印、禁止复制、禁止修改、禁止注释易错 case:同时勾选所有权限,测试全限制组合

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 只设打开密码,没设权限密码

错误
打开密码: 123456,权限密码: 留空
修复
打开密码: 123456,权限密码: abc789(两个密码可以不同)

PDF 的权限控制(禁止打印/复制/修改)由独立的权限密码(owner password)保护。只设打开密码相当于仅限制阅读,不限制操作。

2. 把密码直接写在文件名或邮件正文

错误
文件名:合同_密码123456.pdf;邮件正文:密码是123456
修复
文件名:合同_2024Q3.pdf;密码通过独立渠道(短信/即时通讯)发送

文件名和邮件正文常被邮件服务器、网盘日志明文记录,失去加密意义。密码必须与文件本身走不同传输通道。

3. 用纯数字短密码

错误
密码: 1234
修复
密码: 8位以上混合大小写字母+数字+符号,如 Kd9#mP2!

PDF 加密使用 AES-128 或 AES-256,但密码强度由用户决定。纯数字短密码可在秒级被暴力破解,算法再强也无效。

4. 加密后不验证就删除原文件

错误
加密后直接删除原 PDF,未打开加密文件测试
修复
加密后先关闭 PDF 阅读器,重新打开加密文件输入密码确认可正常阅读,再删除原文件

加密过程可能因内存不足、编码异常导致文件损坏。不验证直接删原文件,可能同时丢失原文件和可用加密文件。

5. 以为加密后文件体积会变小

错误
期望加密后 10MB 的 PDF 变成 5MB
修复
加密后文件体积通常增加 1%-5%(AES 加密头 + 元数据),不会压缩

PDF 加密是编码层面的对称加密,不是压缩算法。文件大小基本不变,甚至因加密元数据略微增大。

6. 在公共电脑上勾选「记住密码」

错误
在网吧/图书馆电脑上加密后勾选「保存密码到本地」
修复
每次使用后清除浏览器缓存,或使用浏览器的无痕/隐私模式

PDF 加密工具的密码通常由前端 JavaScript 处理,勾选「记住」会把密码明文存入浏览器 localStorage,后续用户可读取。

7. 加密后上传云盘,以为云盘也加密了

错误
把加密 PDF 上传到百度网盘/阿里云盘,认为云盘自动加密
修复
上传前已用本工具加密,云盘仅作存储;或使用云盘自带的「加密文件夹」功能叠加保护

云盘的传输加密(HTTPS)和存储加密(服务端)保护的是文件不被第三方窃取,但云盘管理员/合规审查仍可读取未加密内容。

8. 混淆「加密」和「压缩」

错误
用 WinRAR 加密码压缩 PDF,以为这就是 PDF 加密
修复
使用本工具直接对 PDF 本身施加 AES 加密,而非外层压缩包加密

RAR/ZIP 加密保护的是压缩包,解压后 PDF 是明文。PDF 原生加密保护的是文件本身,任何 PDF 阅读器打开时都需要密码。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

C = AES-256-GCM(P, K)

变量说明

  • C — 加密后的密文数据
  • P — 原始 PDF 明文内容
  • K — 用户设定的密码(密钥)

示例

用户上传一份 2MB 的 PDF 文件,设置密码为 'MyP@ssw0rd!'。工具将密码 K 通过 PBKDF2 算法(迭代 100,000 次)派生出 256 位 AES 密钥,对 PDF 明文 P 进行 GCM 模式加密,输出密文 C。加密后的文件大小约 2.01MB(增加 0.5% 的认证标签和 IV 开销),打开时需要输入相同密码才能解密还原为原始 PDF。

适用范围

适用于所有标准 PDF 文件的密码保护,基于 AES-256-GCM 对称加密(NIST SP 800-38D)。不支持已损坏或非标准编码的 PDF,也不适用于数字签名或证书加密场景。

原理图

上传 PDF原始文件设置密码打开 / 权限密码后端加密Go 服务端处理下载加密 PDF密码保护完成隐私说明文件上传后仅用于加密处理处理完成后服务器自动删除原始文件
用户输入 后端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

# 复制所有页面
for page in reader.pages:
    writer.add_page(page)

# 设置用户密码(打开密码)和所有者密码(权限密码)
writer.encrypt(
    user_password="user123",
    owner_password="owner456",
    permissions_flag=-44  # 禁止打印和修改
)

with open("protected.pdf", "wb") as f:
    writer.write(f)

print("已生成 protected.pdf,打开密码:user123")
package main

import (
	"fmt"
	"github.com/pdfcpu/pdfcpu/pkg/api"
	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
)

func main() {
	// 设置打开密码和权限(禁止打印、修改、复制)
	conf := pdfcpu.NewDefaultConfiguration()
	conf.UserPW = "user123"
	conf.OwnerPW = "owner456"
	conf.Permissions = &pdfcpu.Permissions{
		Print:      false,
		Modify:     false,
		Copy:       false,
		Annotations: false,
	}

	err := api.EncryptFile("input.pdf", "protected.pdf", conf)
	if err != nil {
		fmt.Println("加密失败:", err)
		return
	}
	fmt.Println("已生成 protected.pdf")
}
const { PDFDocument } = require('pdf-lib');
const fs = require('fs');

async function encryptPDF() {
  const pdfBytes = fs.readFileSync('input.pdf');
  const pdfDoc = await PDFDocument.load(pdfBytes);

  // 设置打开密码和所有者密码
  pdfDoc.encrypt({
    userPassword: 'user123',
    ownerPassword: 'owner456',
    permissions: {
      printing: 'lowResolution',  // 仅允许低分辨率打印
      modifying: false,
      copying: false,
      annotating: false,
      fillingForms: false,
      contentAccessibility: true,
      documentAssembly: false
    }
  });

  const encryptedBytes = await pdfDoc.save();
  fs.writeFileSync('protected.pdf', encryptedBytes);
  console.log('已生成 protected.pdf');
}

encryptPDF().catch(console.error);

常见问题

8 个高频疑问

密码设了之后,别人用别的软件能打开吗?
PDF 加密分两种:打开密码和权限密码。本工具设的打开密码(用户密码)是 PDF 标准规范的一部分,主流阅读器(Adobe Reader、Chrome 内置 PDF 查看器、福昕、WPS 等)打开时都会弹框要求输入密码,不输入无法查看内容。但部分老旧软件或破解工具可能跳过密码校验,建议配合权限设置(禁止打印/复制)增加保护层级。加密后的文件请自行保存备份,本工具不保留任何副本。
加密后文件变大了,是正常的吗?
正常。PDF 加密过程会对文件内容进行重新编码和打包,通常会引入少量元数据,导致文件体积增加 5%-15%。如果原始文件本身包含大量高清图片或嵌入字体,加密后增量会更明显。如果文件体积翻倍或异常增大,可能是原始 PDF 结构不规范(如扫描件拼合不当),建议用其他工具先优化再加密。本工具不压缩图片,仅做加密操作。
我设了禁止打印,为什么在 WPS 里还是能打印?
权限加密(禁止打印/复制/修改)依赖 PDF 阅读器遵守规范。主流阅读器如 Adobe Reader 会严格禁用打印按钮,但部分国产阅读器(如 WPS 某些版本)在兼容模式下可能忽略权限标记,用户仍可通过「打印」菜单操作。另外,通过「打印为 PDF」虚拟打印机可以绕过权限限制——这属于 PDF 权限控制的固有缺陷。如需更高安全性,建议用打开密码+权限密码双重保护,且不将密码告知他人。
加密后自己忘了密码,还有办法找回吗?
本工具不存储任何密码,加密过程完全在服务器端完成,处理完毕后立即删除上传文件,无法提供找回密码功能。PDF 打开密码目前没有通用破解方法(除非暴力穷举,耗时极长)。建议加密后立即用记事本或密码管理器记录密码。如果文件非常重要且密码遗忘,可以尝试专业 PDF 密码恢复工具(如 Passper for PDF),但成功率取决于密码长度和复杂度——8 位纯数字约几小时可破解,16 位混合字符几乎不可行。
上传加密安全吗?文件会不会被泄漏?
文件通过 HTTPS 加密传输到服务器,处理完成后服务器立即删除原始文件和加密结果,不保留任何副本。本工具后端仅接收文件流,不写入数据库或日志。从隐私角度,建议上传前自行检查文件内容:如果包含高度敏感信息(如身份证扫描件、合同原件),可在本地先用其他工具打码后再上传。加密结果下载后,本工具无法再访问该文件。
加密后文件打不开,提示「文件已损坏」怎么办?
常见原因有三个:① 上传的原始 PDF 本身有损坏(如网络下载不完整、扫描件格式不规范),建议先用其他 PDF 修复工具检查;② 加密过程中网络中断,导致文件上传不完整,重新上传即可;③ 浏览器下载时被安全软件拦截或重命名,检查下载目录下文件扩展名是否为 .pdf。如果仍然打不开,可尝试用 Adobe Acrobat 的「打开并修复」功能,或换一个阅读器打开。
这个加密和 Adobe Acrobat 自带的加密有什么区别?
核心加密算法一致——都使用 AES-128 或 AES-256 位加密(本工具默认 AES-128,兼容性更好)。区别在于:① Adobe Acrobat 是桌面软件,加密过程在本地完成,无需上传文件;本工具需上传到服务器处理,但有网络即可使用,无需安装。② Adobe Acrobat 支持更多高级权限控制(如仅允许低分辨率打印、启用无障碍访问),本工具提供基础权限选项。③ Adobe Acrobat 需要付费授权,本工具免费。如果文件极度敏感,建议用 Adobe Acrobat 本地加密。
能加密超过 100MB 的大文件吗?
支持,但受限于服务器上传超时和内存限制。本工具上传上限为 200MB,超过此大小的文件建议先压缩或拆分后再加密。大文件加密耗时与文件大小成正比——例如 50MB 的 PDF 约需 10-30 秒(取决于服务器负载和网络速度)。如果文件超过 200MB,可尝试使用桌面端工具(如 Adobe Acrobat 或开源的 qpdf)进行本地加密,不受文件大小限制。
选择 打开 +新窗口 esc关闭