I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

L'accesso non autorizzato a file sensibili è un problema comune oggi. Per assicurarti che solo le persone che autorizzi possano accedere al contenuto dei tuoi file, puoi crittografarli prima della trasmissione.

Scopri come crittografare un file PDF utilizzando Python e come decrittografarne uno riportandolo al suo stato originale.

Impostazione dell'ambiente

Per seguire, dovresti avere familiarità con il basi di Python.

Su un terminale Mac o un'interfaccia della riga di comando di Windows, eseguire il seguente comando per installare la libreria PyMuPDF:

pip installa PyMuPDF

Questa libreria ti aiuterà ad aprire e manipolare i file PDF.

Quando hai finito di installare PyMuPDF, sei pronto per iniziare a programmare.

Il codice sorgente completo è disponibile in a Deposito GitHub.

Importa il modulo Fitz

Importa il modulo fitz della libreria PyMuPDF. Ciò ti consentirà di chiamare e utilizzare le funzioni che supporta.

instagram viewer
importare fitz

Utilizzerai fitz per aprire, crittografare, decrittografare e salvare i PDF.

Controlla se il PDF è crittografato

Crea una funzione che verificherà se il PDF è già crittografato restituendo un valore booleano.

defpdf_is_encrypted(file):
pdf = fitz. Documento (file)
ritorno pdf.isCrittografato

Utilizzerai questa funzione in seguito per aiutare il programma a decidere automaticamente se crittografare o decrittografare il PDF di input.

Crittografia del PDF

Creare una funzione per crittografare il PDF di input. La funzione verificherà se il PDF è già crittografato. Se non è crittografato, lo crittograferà utilizzando l'algoritmo AES-256. Questo è l'algoritmo di crittografia più potente offerto da Fitz. Alla fine salverà il PDF crittografato.

defencrypt_pdf_file(pdf, password, outfile, file):
Senon pdf_is_encrypted (file):
permanente = int(
# Assicurati che tutti abbiano il PDF
# può accedervi
fitz. PDF_PERM_ACCESSIBILITÀ
| fitz. PDF_PERM_PRINT # consente la stampa
| fitz. PDF_PERM_COPY # consente la copia
| fitz. PDF_PERM_ANNOTATE # consente le annotazioni
)

# Algoritmo di eEncryption
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (outfile, crittografia=encrypt_meth, user_pw=password,
autorizzazioni=permanente)

Se pdf.salva:
stampa("PDF crittografato")

Questa funzione salva il PDF crittografato nel percorso del file passato nell'argomento outfile.

Decrittazione del PDF crittografato

Crea una funzione di decrittazione. Questa funzione verificherà innanzitutto se il file di input è crittografato. Se è crittografato, richiederà all'utente di inserire la password. Proverà quindi ad aprire il PDF utilizzando la password fornita. Se la password è corretta, fitz decritterà il PDF. Quindi salverà il contenuto del PDF decrittografato in un altro file PDF non protetto.

defdecrypt_pdf(file):
Se pdf_is_encrypted (file):
parola d'ordine = input('Inserisci password pdf: ')
pdf = fitz.open (file)

Se pdf.authenticate (password):
pdf.salva('decrittografato.pdf')

Se pdf.salva:
stampa("PDF decifrato")
altro:
stampa('Password errata')

Questo codice salva il PDF non protetto nella directory di lavoro corrente.

Il ha decifrato il protetto.pdf file e salvarlo come decifrato.pdf.

Controllo del flusso del programma

Crea una funzione principale che controllerà il flusso del tuo programma. Memorizzerà il percorso del PDF di input, chiamerà la funzione di crittografia e decrittografia e passerà i parametri di input.

defprincipale():
# sostituisce il percorso del file con quello di
# il pdf da crittografare o decrittografare
file = 'campione.pdf'
pdf = fitz.open (file)
parola d'ordine = 'passa123'
encrypt_pdf_file (pdf, password, 'protetto.pdf', file)
decifra_pdf (pdf)

Per modificare il nome del file PDF criptato, sostituisci "protected.pdf" con il tuo, assicurandoti di mantenere l'estensione ".pdf".

Esecuzione del metodo principale

Assicurati che il metodo principale venga eseguito per primo:

Se __nome__ == '__principale__':
principale()

Questo codice controlla se lo script viene eseguito come programma principale e non come modulo importato. Se è il programma principale, chiama la funzione principale.

Migliora le tue abilità in Python

La creazione di un programma di crittografia/decrittografia PDF in Python è un progetto divertente ma impegnativo. Ti aiuta a mettere in pratica le tue abilità Python e padroneggiare la gestione dei file con la lingua.

Per migliorare le tue capacità, dovresti lavorare su più progetti Python. Questo ti aiuterà a interagire con più librerie e moduli Python. Python è molto vario e puoi applicarlo in molte aree per svolgere compiti diversi.