Python編程批量實(shí)現(xiàn)md5加密pdf文件
Python編程實(shí)現(xiàn)批量md5加密pdf文件
今天在某公眾號(hào)看到一個(gè)關(guān)于pdf文件加密模塊的介紹,突然有了一個(gè)想法,編寫一個(gè)批量加密某目錄下的所有pdf文件。結(jié)合md5加密和文件查找等知識(shí),實(shí)現(xiàn)這個(gè)想法。
運(yùn)行環(huán)境:
OS:macOS Monterey Version 12.3.1(英文版)
IDE:PyCharm 2020.1
代碼分享如下:
# 文件 ? ? ?:pdf加密.py # IDE ? ? ?:PyCharm # 導(dǎo)入加密模塊 import pikepdf # 導(dǎo)入操作模塊 import os # 導(dǎo)入md5加密模塊 from hashlib import md5 # 此模塊實(shí)現(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)加密?。∶艽a保存好?。?!') # 加密函數(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("請?jiān)俅屋斎爰用芪募拿艽a:", stream=None) ? ? ? ? ? ? if passwrd1 == passwrd2: ? ? ? ? ? ? ? ? username1 = input('請輸入用戶名:') ? ? ? ? ? ? ? ? search_pdf(path, passwrd1, username1) ? ? ? ? ? ? ? ? Done = False ? ? ? ? ? ? ? ? break ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print('密碼輸入有誤?。。?) ? ? ? ? except: ? ? ? ? ? ? print('請核實(shí)信息??!')
運(yùn)行結(jié)果如下:
zsh: suspended sudo python pdf加密.py
(venv) (base) liuxiaowei@MacBookAir 10個(gè)有趣的Python高級(jí)腳本 % sudo python pdf加密.py
請輸入文件所在目錄:/Users/liuxiaowei/Desktop
請輸入加密文件的密碼:
請?jiān)俅屋斎爰用芪募拿艽a:
密碼輸入有誤?。?! # 密碼輸入有誤
請輸入加密文件的密碼:
請?jiān)俅屋斎爰用芪募拿艽a:
密碼輸入有誤?。?!
請輸入加密文件的密碼:
請?jiān)俅屋斎爰用芪募拿艽a: # 密碼輸入正確
請輸入用戶名:lxw
/Users/liuxiaowei/Desktop/sql注入.pdf已經(jīng)加密??!密碼保存好!?。?# 當(dāng)前目錄下的pdf文件
/Users/liuxiaowei/Desktop/TS852D Specification.pdf已經(jīng)加密?。∶艽a保存好?。?!
/Users/liuxiaowei/Desktop/md學(xué)習(xí)筆記/pdf/Windows PE權(quán)威指南.pdf已經(jīng)加密??!密碼保存好?。?! # 子目錄下的pdf文件
/Users/liuxiaowei/Desktop/md學(xué)習(xí)筆記/pdf/PythonCodingRule.pdf已經(jīng)加密??!密碼保存好!?。?br />/Users/liuxiaowei/Desktop/精通黑客免殺完整版.pdf已經(jīng)加密??!密碼保存好??!!
到此這篇關(guān)于Python編程批量實(shí)現(xiàn)md5加密pdf文件的文章就介紹到這了,更多相關(guān)Python加密pdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)處理Pandas庫的使用詳解
這篇文章主要為大家詳細(xì)介紹了pandas庫的使用方法,包括數(shù)據(jù)導(dǎo)入與導(dǎo)出、數(shù)據(jù)查看和篩選、數(shù)據(jù)處理和分組操作等,感興趣的小伙伴可以了解一下2023-07-07Django 權(quán)限認(rèn)證(根據(jù)不同的用戶,設(shè)置不同的顯示和訪問權(quán)限)
這篇文章主要介紹了Django 權(quán)限認(rèn)證(根據(jù)不同的用戶,設(shè)置不同的顯示和訪問權(quán)限),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07利用Python?實(shí)現(xiàn)分布式計(jì)算
這篇文章主要介紹了利用Python?實(shí)現(xiàn)分布式計(jì)算,文章通過借助于?Ray展開對分布式計(jì)算的實(shí)現(xiàn),感興趣的小伙伴可以參考一下2022-05-05Windows下Python使用Pandas模塊操作Excel文件的教程
Pandas是一個(gè)強(qiáng)大的Python數(shù)據(jù)分析模塊,這里我們先使用ANACONDA來幫助獲取Pandas所以來的一些環(huán)境,然后來初步學(xué)習(xí)Windows下Python使用Pandas模塊操作Excel文件的教程2016-05-05從零學(xué)Python之入門(二)基本數(shù)據(jù)類型
這是繼“hello world”之后的第二篇入門級(jí)基礎(chǔ)知識(shí),以后這個(gè)系列會(huì)按照入門、進(jìn)階、精通三個(gè)分類進(jìn)行下去,歡迎高手們來拍磚2014-05-05Python實(shí)現(xiàn)自動(dòng)計(jì)算Excel數(shù)據(jù)指定范圍內(nèi)的區(qū)間最大值
這篇文章主要為大家詳細(xì)介紹了如何基于Python自動(dòng)計(jì)算Excel數(shù)據(jù)指定范圍內(nèi)的區(qū)間最大值,文中的示例代碼簡潔易懂,感興趣的小伙伴可以了解下2023-07-07