You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyPDF2暴力破解PDF:如何判断PasswordType枚举解密结果

解决PyPDF2中decrypt返回PasswordType枚举的判断问题

在PyPDF2库中,PdfReader.decrypt()方法返回的是PasswordType枚举类型,直接用字符串或错误的枚举引用进行判断会导致识别失败。以下是正确的处理方式:

1. 先正确导入枚举类

必须先导入PasswordType枚举,才能和返回值进行比较:

from PyPDF2 import PdfReader, PasswordType

2. 正确的枚举值判断逻辑

decrypt()返回的枚举值有四种可能,其中**PasswordType.OWNER_PASSWORD和PasswordType.USER_PASSWORD都表示密码正确、解密成功**:

  • OWNER_PASSWORD:输入的是拥有者密码,可获得文件的全部操作权限
  • USER_PASSWORD:输入的是用户密码,可打开文件(部分操作可能受限)
  • INCORRECT_PASSWORD:密码错误
  • NO_PASSWORD:文件本身未加密

示例代码:

pdf_reader = PdfReader("your_encrypted.pdf")
password = "test_pass"  # 待测试的密码
decrypt_result = pdf_reader.decrypt(password)

# 判断解密是否成功
if decrypt_result in (PasswordType.OWNER_PASSWORD, PasswordType.USER_PASSWORD):
    print("解密成功!可以读取或操作PDF内容了")
elif decrypt_result == PasswordType.INCORRECT_PASSWORD:
    print("密码错误,解密失败")
else:
    print("PDF文件未加密")

常见错误原因

  • 未导入PasswordType枚举,导致无法识别枚举成员
  • 错误地将返回值与字符串(如"PasswordType.OWNER_PASSWORD")比较,而不是与枚举对象本身比较
  • 只判断了OWNER_PASSWORD但忽略了USER_PASSWORD,导致用户密码正确时也提示失败

内容的提问来源于stack exchange,提问作者Iffat Humaira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:18:18