如何从python解码pdf加密文件

Posted

技术标签:

【中文标题】如何从python解码pdf加密文件【英文标题】:How to decode a pdf encrypted file from python 【发布时间】:2016-12-14 19:15:51 【问题描述】:

我有一个 PDF 文件和相关密码。

我会仅使用 python 将加密文件转换为清晰版本。

我找到了here 一些python 模块(pyPdf2,PDFMiner) 处理 PDF 文件,但它们都不能用于加密。

有人已经这样做了吗?

【问题讨论】:

【参考方案1】:

您还需要知道加密算法和密钥长度,以便能够建议哪种工具可以工作......并且根据答案,python 库可能不可用。

【讨论】:

您的回答是指加密算法和密钥长度取决于之前创建 PDF 的位置吗? 否 - 我的意思是 PDF 文件可以使用 RC4 或 AES 算法,甚至是密钥长度从 40 到 128 的未发布算法进行加密。并非所有库工具都支持所有变体。 没有人尝试重用开源 pdf 阅读器如何检测加密算法和密钥长度?你确定没有标准吗?【参考方案2】:

现在pyPDF2支持加密,根据this answer,可能是这样实现的:

import os
import PyPDF2
from PyPDF2 import PdfFileReader

fp = open(filename)
pdfFile = PdfFileReader(fp)
password = "mypassword"
if pdfFile.isEncrypted:
    try:
        pdfFile.decrypt(password)
        print('File Decrypted (PyPDF2)')
    except:
        command = ("cp "+ filename +
            " temp.pdf; qpdf --password='' --decrypt temp.pdf " + filename
            + "; rm temp.pdf")
        os.system(command)
        print('File Decrypted (qpdf)')
        fp = open(filename)
        pdfFile = PdfFileReader(fp)
else:
    print('File Not Encrypted')

请注意,此代码默认使用pyPDF2,如果出现问题,请故障回复到qpdf。

【讨论】:

以上是关于如何从python解码pdf加密文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥我用Base64加密后,不能将它解密?

Python 办公自动化,一键给PDF文件加密,超方便

python [使用PyPDF2加密PDF文件]使用Python加密PDF文件。 #蟒蛇

520晚上,我用python破解了前女友的加密文件,结果却发现。。。

JAVA如何对URL进行加密和解密啊

PDF文件加密有什么方法?如何给PDF文件加密