对于私密的PDF文档,为了不让别人查看里面的内容,我们需要设置一个密码。可以利用Python来实现,在PyPDF2模块中,调用encrypt()方法,可以为PDF文档设置密码。
操作系统:macOS Monterey 12.5
IDE:Pycharm 2021.3
语言:Python3.9
1. PDF文档的加密
加密原理:对PDF文档进行加密的原理其实很简单,不断读取“7.pdf“每一页中的内容,将其写入pdf_writer对象中。在将该对象作为PDF文档写到本地前,调用encrypt()方法,完成密码设置。代码如下:
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader('7.pdf')
pdf_writer = PdfFileWriter()
pages = pdf_reader.getNumPages()
for i in range(pages):
content = pdf_reader.getPage(i)
pdf_writer.addPage(content)
pdf_writer.encrypt('123456')
with open('7_加密.pdf', 'wb') as p:
pdf_writer.write(p)
运行结果如下图所示:
2. PDF文档的暴力破解
在PyPDF2模块中,调用decrypt()方法,通过读取密码字典文件里的密码,暴力破解,即可完成PDF文档的解密。源码如下:
# PDF文档的解密
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader('7_加密.pdf')
pdf_writer = PdfFileWriter()
# 读取密码字典文件里的密码,进行暴力破解
with open('password.txt', 'r') as f:
for passwrd in f.readlines():
if pdf_reader.decrypt(passwrd.strip()):
print(f'文件已破解!!! 密码为{passwrd.strip()}')
pages = pdf_reader.getNumPages()
for i in range(pages):
content = pdf_reader.getPage(i)
pdf_writer.addPage(content)
with open('new_7.pdf', 'wb') as pdf:
pdf_writer.write(pdf)
运行结果如下:
打开破解文件如下图所示: