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

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

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

用python完成PDF的解密!?。。ǎ〈a直接可以運(yùn)行?。?/p>

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

前言

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

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

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

pip install pypdf2
pip install pycryptodome

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

1.引入庫

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

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

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

python2需要修改的地方在代碼中已經(jīng)標(biāo)注,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),不會(huì)展示在終端中)
        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ù)

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

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

password: 原文件對(duì)應(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 #高加密的方法,要引入不然會(huì)報(bào)錯(cuò)

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),不會(huì)展示在終端中)
        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__':
    # 逗號(hào)前面的為需要解密的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ù)制后,再黏貼到代碼中的指定位置即可

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

我們接著運(yùn)行代碼,接著指向的地址看

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

我們看到解密后的文件因?yàn)槿∠思用軝?quán)限,文件的大小也小了點(diǎn)

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

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

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

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

    使用Python輕松實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖床功能

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

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

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

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

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

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

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

    python的re正則表達(dá)式實(shí)例代碼

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

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

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

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

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

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

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

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

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

最新評(píng)論

哈巴河县| 乐山市| 尤溪县| 江山市| 寿宁县| 永福县| 茌平县| 收藏| 牟定县| 乐都县| 宣化县| 叙永县| 吴江市| 拉萨市| 天全县| 宜阳县| 全州县| 肇东市| 渭南市| 海伦市| 郴州市| 盐边县| 闻喜县| 衡南县| 朔州市| 洪湖市| 沁阳市| 托克托县| 增城市| 任丘市| 沭阳县| 扶沟县| 理塘县| 武隆县| 防城港市| 滦平县| 登封市| 衢州市| 襄汾县| 五大连池市| 德保县|