網(wǎng)站首頁 編程語言 正文
Python編程實現(xiàn)批量md5加密pdf文件
今天在某公眾號看到一個關(guān)于pdf文件加密模塊的介紹,突然有了一個想法,編寫一個批量加密某目錄下的所有pdf文件。結(jié)合md5加密和文件查找等知識,實現(xiàn)這個想法。
運行環(huán)境:
OS:macOS Monterey Version 12.3.1(英文版)
IDE:PyCharm 2020.1
代碼分享如下:
# 文件 ? ? ?:pdf加密.py
# IDE ? ? ?:PyCharm
# 導入加密模塊
import pikepdf
# 導入操作模塊
import os
# 導入md5加密模塊
from hashlib import md5
# 此模塊實現(xiàn)輸入密碼不顯示
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}已經(jīng)加密!!密碼保存好!!!')
# 加密函數(shù)
def encrypt_md5(passwrd_str):
? ? new_md5 = md5() ? # 創(chuàng)建md5對象
? ? new_md5.update(passwrd_str.encode(encoding='utf-8'))
? ? # 返回信息摘要
? ? return ?new_md5.hexdigest()
# 加密函數(shù),參數(shù)為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))
# 主函數(shù)
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('請核實信息!!')
運行結(jié)果如下:
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已經(jīng)加密!!密碼保存好!!! # 當前目錄下的pdf文件
/Users/liuxiaowei/Desktop/TS852D Specification.pdf已經(jīng)加密!!密碼保存好!!!
/Users/liuxiaowei/Desktop/md學習筆記/pdf/Windows PE權(quán)威指南.pdf已經(jīng)加密!!密碼保存好!!! # 子目錄下的pdf文件
/Users/liuxiaowei/Desktop/md學習筆記/pdf/PythonCodingRule.pdf已經(jīng)加密!!密碼保存好!!!
/Users/liuxiaowei/Desktop/精通黑客免殺完整版.pdf已經(jīng)加密!!密碼保存好!!!
原文鏈接:https://blog.csdn.net/weixin_41905135/article/details/124396225
相關(guān)推薦
- 2024-03-15 Redis中RDB和AOF
- 2022-06-25 Python編程批量實現(xiàn)md5加密pdf文件_python
- 2022-04-16 c語言?數(shù)據(jù)存儲與原碼?反碼?補碼詳細解析_C 語言
- 2023-11-17 Linux CentOS如何修改root用戶密碼
- 2022-05-18 Yolov5訓練意外中斷后如何接續(xù)訓練詳解_python
- 2022-11-16 python多維列表總是只轉(zhuǎn)為一維數(shù)組問題解決_python
- 2023-05-23 numpy增加維度、刪除維度的方法_python
- 2023-04-12 C#?DataGridView行列轉(zhuǎn)換的具體實現(xiàn)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支