PDF 的加密与解密¶
PDF 加密使用 RC4
和 AES
算法,具有不同的密钥长度。pypdf
支持所有这些算法,直到 PDF-2.0
,这是最新的 PDF 标准。
pypdf
使用额外的依赖来执行 AES
算法的加密或解密。
我们推荐使用 pyca/cryptography
。另外,您也可以使用 pycryptodome
。
备注
请参阅 安装指南 中的说明,了解如何安装与 AES 加密 PDF 交互所需的额外依赖。
加密¶
您可以使用密码加密 PDF:
from pypdf import PdfReader, PdfWriter
reader = PdfReader("example.pdf")
writer = PdfWriter(clone_from=reader)
# 为新 PDF 添加密码
writer.encrypt("my-secret-password", algorithm="AES-256")
# 将新 PDF 保存到文件
with open("encrypted-pdf.pdf", "wb") as f:
writer.write(f)
算法可以是 RC4-40
、RC4-128
、AES-128
、AES-256-R5
、AES-256
之一。我们建议使用 AES-256-R5
。
警告
如果省略 "algorithm" 参数,pypdf
默认使用 RC4
,以保持兼容性。
由于 RC4
不安全,您应使用 AES
算法。
解密¶
您可以使用适当的密码解密 PDF:
from pypdf import PdfReader, PdfWriter
reader = PdfReader("encrypted-pdf.pdf")
if reader.is_encrypted:
reader.decrypt("my-secret-password")
writer = PdfWriter(clone_from=reader)
# 将新 PDF 保存到文件
with open("decrypted-pdf.pdf", "wb") as f:
writer.write(f)