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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python编程实现批量md5加密pdf文件

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

运行环境:

OS:macOS Monterey Version 12.3.1(英文版)

image.png

IDE:PyCharm 2020.1

代码分享如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :4/24/22 11:38 AM
# 文件      :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已经加密!!密码保存好!!!

image.png
感兴趣的可以试试。欢迎分享,收藏,点赞。

相关文章
|
1天前
|
安全 网络安全 数据安全/隐私保护
Python渗透测试之流量分析:流量嗅探工具编程
Python渗透测试之流量分析:流量嗅探工具编程
|
1天前
|
IDE 搜索推荐 网络安全
Python编程:编写被动信息搜集之网址的IP及Whois查询
Python编程:编写被动信息搜集之网址的IP及Whois查询
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:招生档案按省份地区归档
Python编程案例:招生档案按省份地区归档
|
算法 安全 数据安全/隐私保护
|
算法 安全 数据安全/隐私保护
|
1天前
|
iOS开发 MacOS Python
Python 编程案例:谁没交论文?输出并生成电子表格
Python 编程案例:谁没交论文?输出并生成电子表格
16 9
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:查找指定文件大小的文件并输出路径
Python编程案例:查找指定文件大小的文件并输出路径
10 3
|
1天前
|
文件存储 iOS开发 MacOS
Python编程案例:文件查找并归类
Python编程案例:文件查找并归类
|
1天前
|
Python
Python编程案例:同一工作簿不同表单特定数据添加到工作簿的另一表单里
Python编程案例:同一工作簿不同表单特定数据添加到工作簿的另一表单里
|
1天前
|
iOS开发 MacOS Python
Python编程案例:根据姓名归档论文、报告
Python编程案例:根据姓名归档论文、报告