最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用pypdf2實現(xiàn)pdf文檔解密

 更新時間:2023年12月25日 12:09:26   作者:不當(dāng)王多魚不改名  
利用pypdf2完成pdf的解密,這里的事例是python3環(huán)境下的,當(dāng)然python2下也可以運行,只需要修改名稱即可,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下

用python完成PDF的解密?。。。ǎ〈a直接可以運行?。?/p>

用python的庫函數(shù)pypdf2完成解密,如果不會用python的小伙伴別擔(dān)心,直接點總結(jié)看最暴力最直接的辦法(在線解密)

前言

利用pypdf2完成pdf的解密,這里的事例是python3環(huán)境下的,當(dāng)然python2下也可以運行,只需要修改名稱即可,在代碼中有修改的地方,筆者也會指出,看完這篇你不會解密pdf的話?。?!那我就再寫一篇。

一、導(dǎo)入庫函數(shù)

這里用到的模塊有pypdf2、pycryptodome,如果沒有模塊的需要在對應(yīng)的虛擬環(huán)境中執(zhí)行以下的pip安裝命令

pip install pypdf2
pip install pycryptodome

二、主要函數(shù)解讀

1.引入庫

如果是python2的在引入函數(shù)方法的時候需要改一下,如果是python3的就直接復(fù)制下面代碼就好

from PyPDF2 import PdfReader #pdf的讀取方法
from PyPDF2 import PdfWriter #pdf的寫入方法
"""
如果是python2的將上面的PdfReader和PdfWriter改為
PdfFileReader和PDFfileWriter即可
"""
from Crypto.Cipher import AES #高加密的方法,要引入不然會報錯

2.自定義pdf讀取函數(shù)

python2需要修改的地方在代碼中已經(jīng)標注,python3的直接復(fù)制下面代碼即可

def get_reader(filename, password): #讀取pdf的方法(自定義函數(shù))
    try:
        old_file = open(filename, 'rb')
        print('解密開始...')
    except Exception as err:
        return print('文件打開失敗!' + str(err))

    """如果是python2將PdfReader改為PdfFileReader"""
    pdf_reader = PdfReader(old_file, strict=False) #讀取pdf文件

    """如果是python2將is_encrypted改為isEncrypted"""
    if pdf_reader.is_encrypted: #解密操作(以下操作是自適應(yīng),不會展示在終端中)
        if password is None:
            return print('文件被加密,需要密碼!--{}'.format(filename))
        else:
            if pdf_reader.decrypt(password) != 1:
                return print('密碼不正確!--{}'.format(filename))
    elif old_file in locals():
        old_file.close() #如果pdf文件已經(jīng)在本地了就關(guān)閉
    return pdf_reader #返回讀出pdf的值

3.自定義pdf生成函數(shù)

將加密的文件及逆行解密,并生成一個無需密碼pdf文件,下面是生成函數(shù)deception_pdf的基本參數(shù)

filename: 原先加密的pdf文件名稱

password: 原文件對應(yīng)的密碼

decrypted_filename: 解密之后的文件名

def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定義函數(shù))
    print('正在生成解密...')
    #得到傳入的文件名和密碼(這里不用做修改)
    pdf_reader = get_reader(filename, password) 
    if pdf_reader is None:
        return print("無內(nèi)容讀取")

    """如果是python2將is_encrypted改為isEncrypted"""
    elif not pdf_reader.is_encrypted:
        return print('文件沒有被加密,無需操作')

    """如果是python2將PdfWriter改為PdfFileWriter"""
    pdf_writer = PdfWriter() #寫pdf(記錄pdf內(nèi)容)

    """如果是python2將append_pages_from_reader改為appendPagesFromReader"""
    pdf_writer.append_pages_from_reader(pdf_reader)

    if decrypted_filename is None: #創(chuàng)建解密后的pdf文件和展示文件的路徑
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'
        print("解密文件已生成:{}".format(decrypted_filename))
    # 寫入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))

三、完整源代碼

from PyPDF2 import PdfReader #pdf的讀取方法
from PyPDF2 import PdfWriter #pdf的寫入方法
from Crypto.Cipher import AES #高加密的方法,要引入不然會報錯

def get_reader(filename, password): #讀取pdf的方法(自定義函數(shù))
    try:
        old_file = open(filename, 'rb')
        print('解密開始...')
    except Exception as err:
        return print('文件打開失??!' + str(err))

    #如果是python2將PdfReader改為PdfFileReader
    pdf_reader = PdfReader(old_file, strict=False) #讀取pdf文件

    # 如果是python2將is_encrypted改為isEncrypted
    if pdf_reader.is_encrypted: #解密操作(以下操作是自適應(yīng),不會展示在終端中)
        if password is None:
            return print('文件被加密,需要密碼!--{}'.format(filename))
        else:
            if pdf_reader.decrypt(password) != 1:
                return print('密碼不正確!--{}'.format(filename))
    elif old_file in locals():
        old_file.close() #如果pdf文件已經(jīng)在本地了就關(guān)閉
    return pdf_reader #返回讀出pdf的值
    
def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定義函數(shù))
    print('正在生成解密...')
    pdf_reader = get_reader(filename, password) #得到傳入的文件名,和密碼(如果密碼沒有可以不填)
    if pdf_reader is None:
        return print("無內(nèi)容讀取")

    # 如果是python2將is_encrypted改為isEncrypted
    elif not pdf_reader.is_encrypted:
        return print('文件沒有被加密,無需操作')

    # 如果是python2將PdfWriter改為PdfFileWriter
    pdf_writer = PdfWriter() #寫pdf(記錄pdf內(nèi)容)

    #如果是python2將append_pages_from_reader改為appendPagesFromReader
    pdf_writer.append_pages_from_reader(pdf_reader)

    if decrypted_filename is None: #創(chuàng)建解密后的pdf文件和展示文件的路徑
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'
        print("解密文件已生成:{}".format(decrypted_filename))
    # 寫入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))

if __name__ == '__main__':
    # 逗號前面的為需要解密的pdf文件路徑,后面的''里面為密碼,如果不知道就用不填
    deception_pdf(r'E:\考研\(zhòng)301數(shù)學(xué)一\數(shù)學(xué)書\數(shù)學(xué)書\2024kaoyanmath1.pdf', '')

使用方法:
 

我們要先得到需要解密的文件路徑,如下看到我們的文件路徑為(?E:\考研\(zhòng)301數(shù)學(xué)一\數(shù)學(xué)書\數(shù)學(xué)書\2024kaoyanmath1.pdf)復(fù)制后,再黏貼到代碼中的指定位置即可

在這里插入圖片描述

在這里插入圖片描述

為了看到直觀效果,我們看到這里的原文件是被加密的,接下來我們運行上面的代碼然后再來看看效果

在這里插入圖片描述

我們接著運行代碼,接著指向的地址看

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

我們看到解密后的文件因為取消了加密權(quán)限,文件的大小也小了點

在這里插入圖片描述

總結(jié)

以上就是python使用pypdf2實現(xiàn)pdf文檔解密的詳細內(nèi)容,更多關(guān)于python pypdf2實現(xiàn)pdf解密的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Python計算機視覺 圖像扭曲(仿射扭曲)

    詳解Python計算機視覺 圖像扭曲(仿射扭曲)

    這篇文章主要介紹了Python計算機視覺 圖像扭曲(仿射扭曲),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 使用Python輕松實現(xiàn)一個簡單的圖床功能

    使用Python輕松實現(xiàn)一個簡單的圖床功能

    在網(wǎng)上分享圖片或?qū)D片嵌入到網(wǎng)頁中時,通常需要一個圖床來存儲和管理這些圖片,所以本文就來為大家介紹一下如何使用Python輕松實現(xiàn)一個簡單的圖床功能吧
    2024-01-01
  • 利用Python腳本批量生成SQL語句

    利用Python腳本批量生成SQL語句

    這篇文章主要介紹了利用Python腳本批量生成SQL語句,具有很好對參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)

    Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)

    下面小編就為大家分享一篇Ubuntu16.04/樹莓派Python3+opencv配置教程。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的全過程

    python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的全過程

    最近項目中采用了前后端分離的技術(shù),感覺有必要給大家總結(jié)下,所以下面這篇文章主要給大家介紹了關(guān)于python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python的re正則表達式實例代碼

    python的re正則表達式實例代碼

    這篇文章主要介紹了python的re正則表達式,分享了一則re模塊實現(xiàn)的正則表達式實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python中ablang包語法、參數(shù)和最佳實踐

    Python中ablang包語法、參數(shù)和最佳實踐

    ablang是基于深度學(xué)習(xí)的抗體序列分析工具包,提供嵌入表示、突變預(yù)測和結(jié)構(gòu)分析功能,應(yīng)用于計算免疫學(xué)、藥物開發(fā)等領(lǐng)域,通過pip安裝,需結(jié)合實驗驗證,確保序列質(zhì)量與參數(shù)正確,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 利用Python爬蟲實現(xiàn)搶購某寶秒殺商品

    利用Python爬蟲實現(xiàn)搶購某寶秒殺商品

    這篇文章主要介紹了利用Python爬蟲實現(xiàn)搶購某寶秒殺商品,文章基于python的相關(guān)資料展開詳細的內(nèi)容介紹具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 教你用python實現(xiàn)12306余票查詢

    教你用python實現(xiàn)12306余票查詢

    今天就和大家一起來討論一下python實現(xiàn)12306余票查詢(pycharm+python3.7),一起來感受一下python爬蟲的簡單實踐,需要的朋友可以參考下
    2021-06-06
  • Python?操作?Excel?之?openpyxl?模塊

    Python?操作?Excel?之?openpyxl?模塊

    這篇文章主要介紹了Python?操作?Excel?之?openpyxl?模塊,文章基于python的相關(guān)資料展開對?openpyxl?模塊的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05

最新評論

沅江市| 新昌县| 双流县| 安陆市| 永吉县| 修武县| 竹溪县| 修文县| 平昌县| 绵阳市| 连平县| 奉节县| 临泽县| 天全县| 苍溪县| 罗平县| 临猗县| 苏尼特右旗| 乐清市| 长丰县| 濮阳市| 青州市| 龙山县| 临夏市| 平安县| 西贡区| 建湖县| 宁波市| 海门市| 包头市| 习水县| 西贡区| 会宁县| 崇阳县| 余干县| 镇宁| 灵台县| 锦州市| 六盘水市| 宜丰县| 东方市|