网站建设中网站需求分析,深圳网站建设 设计首选公司,老薛主机卸载wordpress,汕头网站建设方案维护PDF文档的加密和解密 文章目录 PDF文档的加密和解密前言一、总体构思二、使用到的库三、PDF文档的加密1.用户输入模块2.打开并读取文档数据3.遍历保存数据到新文档4.新文档进行加密5.新文档命名生成路径6.保存新加密的文档 四、PDF文档的解密1.用户输入模块2.前提准备2.文件解密…PDF文档的加密和解密 文章目录 PDF文档的加密和解密前言一、总体构思二、使用到的库三、PDF文档的加密1.用户输入模块2.打开并读取文档数据3.遍历保存数据到新文档4.新文档进行加密5.新文档命名生成路径6.保存新加密的文档 四、PDF文档的解密1.用户输入模块2.前提准备2.文件解密与保存 总结 前言
这篇我没有放到专栏《Python 自动化》。因为市面上文档的加解密功能几乎是免费的而且功能很全面。 所以这个关于Python的PDF文档加解密看着一乐就行日常工作用不到也不会用这个去搞。
建议各位看这个之前先去看一下我之前写的两篇要不然下面的可能会看的云里雾里。
https://blog.csdn.net/weixin_57061292/article/details/134790966?spm1001.2014.3001.5502 https://blog.csdn.net/weixin_57061292/article/details/134817121?spm1001.2014.3001.5502 一、总体构思
下面我会分成两部分进行编写先是加密文档后是解密文档。
二、使用到的库 代码如下 import sys
import PyPDF2
import itertools
import time加解密总共需要引入这些库这是前提。 三、PDF文档的加密
1.用户输入模块
代码如下
# 用户输入要加密的PDF文件
print(请输入pdf文档完整路径例子E:\BaiduNetdiskDownload\你好.pdf, end)
pdf_path input())这里提示用户输入要加密的PDF文档。 2.打开并读取文档数据
代码如下
#以二进制形式打开文档
open_pdf open(pdf_path, rb)#读取文档的数据
read_pdf PyPDF2.PdfReader(open_pdf)#获取文档的总页数
get_pdf_pages len(read_pdf.pages)PDF文档操作之前经常要准备的三件套哈。 3.遍历保存数据到新文档
代码如下
# 创建一个新的PDF文件以保存加密后的文档
pdf_out PyPDF2.PdfWriter()# 遍历源PDF的每一页并将它们添加到新的PDF中
for get_pdf_page in range(get_pdf_pages):page read_pdf.pages[get_pdf_page]pdf_out.add_page(page)代码注释写的很清楚了我就不赘述了 4.新文档进行加密
代码如下
#提示用户输入密码
print(请输入密码, end)
password str(input())# 应用加密
pdf_out.encrypt(password)这就是这个的加密过程。。。 5.新文档命名生成路径
代码如下
# 获取用户输入的文件名不包括路径
pdf_file_name pdf_path.split(\\)[-1] # 使用 \\
pdf_base_name pdf_file_name.split(.)[0] # 去掉扩展名# 指定保存 .pdf 文件的完整路径和名称
output_dir D:/ # 替换为您的实际输出目录
output_file_name f{pdf_base_name}_加密.pdf
output_path output_dir output_file_name第一块代码是保留下来源文件的名称。 第二块代码是给新文件指明要保存到哪个路径。 6.保存新加密的文档
代码如下
#保存文档
pdf_out.write(output_path)#结束函数的调用
pdf_out.close()print(加密好了快去看一下吧。)最后程序会print一下这个出来了就表明加密成功了。
加密文档到这里就结束了下面是解密文档。 四、PDF文档的解密
这个解密文档我稍微添加了一些自己的想法。
除了让用户输入要解密的文档还有要求输入要解密到几位数的密码比如用户输入5程序会把从1位数到5位数的密码都试一遍。
1.用户输入模块
代码如下
# 用户输入加密的PDF文件
print(请输入pdf文档完整路径例子E:\BaiduNetdiskDownload\你好.pdf, end)
pdf_path input()# 输入密码可能最大的长度
print(请输入输入密码可能最大的长度, end)
len_passwd int(input())# 用于破解密码的密码库
passwd_bank 1111111最后一行是密码库大家可以自行添加进行测试。 2.前提准备
代码如下
with open(pdf_path, rb) as fh:pdf PyPDF2.PdfReader(fh)这里要先声明好用法下面会用上。 2.文件解密与保存
代码如下
start_time time.time()
for i in range(len_passwd):i 1for passwd in itertools.permutations(passwd_bank, ri):guess_passwd .join(passwd)pdf.decrypt(guess_passwd)try:# 这里是可能会出错的代码密码不对会报错page pdf.pages[0]if page.extractText() 1:print(f密码正确这是{i}位数的 {guess_passwd})stop_time time.time()print(f共用时{stop_time - start_time}秒。)#保存文档到与加密文档一样的目录with open(passwords.txt, w) as f:f.write(guess_passwd)#退出整个程序 sys.exit()except Exception:# 当出现类型的错误时执行这里的代码passelse:print(f{i}位数的密码已试完。)简单给大家说一下吧。 首先最外层的for循环的作用是让密码从1位数跑到用户设置的X位数。 其次中间那层for循环就是密码是1位数的时候全部1位数的密码都跑一遍直至跑到用户设置的X位数。 然后最里层的try—except结构作用是保证程序在报错的时候也可以持续试密码。因为密码不对的时候程序会报错。 最后剩下的就是把文件保存与加密文档一样的目录打印一条信息告诉你搞定了。
这块要是还不怎么懂可以先看一下我这篇博客关于破解密码小程序的东西。 https://blog.csdn.net/weixin_57061292/article/details/134719727?spm1001.2014.3001.5502 总结
大致就是这些东西东西不多希望对大家有所帮助吧。