Python批量加密PDF文件:基于MD5密码与pikepdf的实现

Ivy
Ivy
发布时间:2026-10-15| 4人浏览过
原创

本文介绍如何使用Python脚本批量对指定目录下的PDF文件进行加密。通过结合os模块递归查找文件,利用hashlib生成MD5哈希密码,并调用pikepdf库实现文件加密。文章提供了完整代码示例及终端运行结果,展示了如何处理密码验证、子目录遍历及加密状态提示,适用于需要批量保护PDF文档安全的开发者。

Python批量加密PDF文件:基于MD5密码与pikepdf的实现

在近期阅读某公众号关于PDF加密模块的文章后,笔者萌生了一个想法:编写一个Python脚本,批量加密指定目录下的所有PDF文件。该方案结合了MD5加密技术与文件遍历查找功能,旨在实现这一自动化处理目标。

运行环境配置

运行环境配置如下:

操作系统:macOS Monterey Version 12.3.1(英文版)

集成开发环境: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编程批量实现PDF文件MD5加密的介绍已完成。如需了解更多Python加密PDF文件的相关内容,建议搜索本站过往文章或继续阅读后续系列教程,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。