Python编程批量实现md5加密pdf文件

 更新时间:2022年04月27日 09:53:42   作者:Bruce_Liuxiaowei  
这篇文章主要介绍了Python编程批量实现md5加密pdf文件,文章基于python的相关资料展开详细内容介绍,具有一定的参考价值需要的小伙伴可以参考一下

Python编程实现批量md5加密pdf文件
今天在某公众号看到一个关于pdf文件加密模块的介绍,突然有了一个想法,编写一个批量加密某目录下的所有pdf文件。结合md5加密和文件查找等知识,实现这个想法。

运行环境:

OS:macOS Monterey Version 12.3.1(英文版)

IDE:PyCharm 2020.1

代码分享如下:

# 文件      :pdf加密.py
# IDE      :PyCharm

# 导入加密模块
import pikepdf
# 导入操作模块
import os
# 导入md5加密模块
from hashlib import md5
# 此模块实现输入密码不显示
import getpass

# 搜索pdf文件,加密
def search_pdf(path, passwrd, username):
    for pdfFile in os.listdir(path):
        pdfPath = os.path.join(path, pdfFile)
        if os.path.isdir(pdfPath):
            search_pdf(pdfPath, passwrd, username)

        elif '.pdf' in pdfPath:

            encry_pdf(pdfPath, encrypt_md5(passwrd), username)
            print(f'{pdfPath}已经加密!!密码保存好!!!')


# 加密函数
def encrypt_md5(passwrd_str):
    new_md5 = md5()   # 创建md5对象
    new_md5.update(passwrd_str.encode(encoding='utf-8'))
    # 返回信息摘要
    return  new_md5.hexdigest()


# 加密函数,参数为pdf文件名,密码
def encry_pdf(pdfname, passwrd, username):
    # 打开被加密的文件,允许覆盖
    pdf = pikepdf.open(pdfname, allow_overwriting_input=True)
    # 保存加密文件
    pdf.save(pdfname, encryption=pikepdf.Encryption(owner=passwrd,user=username, R=4))

# 主函数
if __name__ == '__main__':
    Done = True
    path = input('请输入文件所在目录:')
    while Done:
        try:
            passwrd1 = getpass.getpass("请输入加密文件的密码:", stream=None)
            passwrd2 = getpass.getpass("请再次输入加密文件的密码:", stream=None)
            if passwrd1 == passwrd2:
                username1 = input('请输入用户名:')
                search_pdf(path, passwrd1, username1)
                Done = False
                break
            else:
                print('密码输入有误!!!')
        except:
            print('请核实信息!!')

运行结果如下:

zsh: suspended  sudo python pdf加密.py
(venv) (base) liuxiaowei@MacBookAir 10个有趣的Python高级脚本 % sudo python pdf加密.py
请输入文件所在目录:/Users/liuxiaowei/Desktop
请输入加密文件的密码:
请再次输入加密文件的密码:
密码输入有误!!!              # 密码输入有误
请输入加密文件的密码:
请再次输入加密文件的密码:  
密码输入有误!!!
请输入加密文件的密码:      
请再次输入加密文件的密码:   # 密码输入正确
请输入用户名:lxw
/Users/liuxiaowei/Desktop/sql注入.pdf已经加密!!密码保存好!!! # 当前目录下的pdf文件
/Users/liuxiaowei/Desktop/TS852D Specification.pdf已经加密!!密码保存好!!!
/Users/liuxiaowei/Desktop/md学习笔记/pdf/Windows PE权威指南.pdf已经加密!!密码保存好!!! # 子目录下的pdf文件
/Users/liuxiaowei/Desktop/md学习笔记/pdf/PythonCodingRule.pdf已经加密!!密码保存好!!!
/Users/liuxiaowei/Desktop/精通黑客免杀完整版.pdf已经加密!!密码保存好!!!

到此这篇关于Python编程批量实现md5加密pdf文件的文章就介绍到这了,更多相关Python加密pdf文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何在类中定义装饰器

    Python如何在类中定义装饰器

    这篇文章主要介绍了Python如何在类中定义装饰器的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Django跨域请求问题的解决方法示例

    Django跨域请求问题的解决方法示例

    这篇文章主要给大家介绍了关于Django跨域请求问题解决的相关资料,文中介绍的实现方法包括:使用django-cors-headers全局控制、使用JsonP,只能用于Get方法以及在views.py里设置响应头,只能控制单个接口,需要的朋友可以参考下
    2018-06-06
  • Pickle模块中的dump()和load()方法简介

    Pickle模块中的dump()和load()方法简介

    Pickle模块实现了基本的数据序列化与反序列化操作,通过序列化操作,我们可以将程序中运行的对象信息转化为字节流保存到文件中去,永久存储在磁盘上,这篇文章主要介绍了Pickle模块中的dump()和load()方法介绍,需要的朋友可以参考下
    2023-03-03
  • 快速上手Python Kafka库安装攻略

    快速上手Python Kafka库安装攻略

    想要在Python中使用Kafka库吗?不用担心,我们的安装指南将帮助你快速上手,无论你是初学者还是有经验的开发者,这篇指南都能满足你的需求,跟着我们一起来探索如何轻松安装Python Kafka库吧!
    2023-12-12
  • Python使用Selenium、PhantomJS爬取动态渲染页面

    Python使用Selenium、PhantomJS爬取动态渲染页面

    本文主要介绍了Python使用Selenium、PhantomJS爬取动态渲染页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python编写朴素贝叶斯用于文本分类

    python编写朴素贝叶斯用于文本分类

    这篇文章主要为大家详细介绍了python编写朴素贝叶斯用于文本分类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python终端输出彩色字符方法详解

    Python终端输出彩色字符方法详解

    这篇文章主要介绍了Python终端输出彩色字符方法详解,需要的朋友可以参考下
    2020-02-02
  • Python抠图教程之使用OpenCV实现背景去除

    Python抠图教程之使用OpenCV实现背景去除

    这篇文章主要给大家介绍了关于Python抠图教程之使用OpenCV实现背景去除的相关资料,背景去除是在很多视觉应用里的主要预处理步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Python ndarray 数组的变形详情

    Python ndarray 数组的变形详情

    这篇文章主要介绍了Python ndarray数组的变形详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python下载文件记录黑名单的实现代码

    python下载文件记录黑名单的实现代码

    这篇文章主要介绍了python下载文件记录黑名单的实现代码,需要的朋友可以参考下
    2017-10-10

最新评论