Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Η μη εξουσιοδοτημένη πρόσβαση σε ευαίσθητα αρχεία είναι ένα κοινό ζήτημα σήμερα. Για να βεβαιωθείτε ότι μόνο τα άτομα που εξουσιοδοτείτε μπορούν να έχουν πρόσβαση στο περιεχόμενο των αρχείων σας, μπορείτε να τα κρυπτογραφήσετε πριν από τη μετάδοση.

Μάθετε πώς να κρυπτογραφείτε ένα αρχείο PDF χρησιμοποιώντας Python και πώς να αποκρυπτογραφείτε ένα αρχείο πίσω στην αρχική του κατάσταση.

Ρύθμιση του περιβάλλοντος

Για να ακολουθήσετε, θα πρέπει να είστε εξοικειωμένοι με το βασικά της Python.

Σε ένα τερματικό Mac ή μια διεπαφή γραμμής εντολών των Windows, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε τη βιβλιοθήκη PyMuPDF:

pip εγκατάσταση PyMuPDF

Αυτή η βιβλιοθήκη θα σας βοηθήσει να ανοίξετε και να χειριστείτε αρχεία PDF.

Όταν ολοκληρώσετε την εγκατάσταση του PyMuPDF, είστε έτοιμοι να ξεκινήσετε την κωδικοποίηση.

instagram viewer

Ο πλήρης πηγαίος κώδικας είναι διαθέσιμος σε α Αποθετήριο GitHub.

Εισαγάγετε τη μονάδα Fitz

Εισαγωγή λειτουργικής μονάδας fitz της βιβλιοθήκης PyMuPDF. Αυτό θα σας επιτρέψει να καλέσετε και να χρησιμοποιήσετε τις λειτουργίες που υποστηρίζει.

εισαγωγή fitz

Θα χρησιμοποιήσετε το fitz για να ανοίξετε, να κρυπτογραφήσετε, να αποκρυπτογραφήσετε και να αποθηκεύσετε τα PDF.

Ελέγξτε εάν το PDF είναι κρυπτογραφημένο

Δημιουργήστε μια συνάρτηση που θα ελέγχει εάν το PDF είναι ήδη κρυπτογραφημένο επιστρέφοντας μια τιμή boolean.

defpdf_is_encrypted(αρχείο):
pdf = fitz. Έγγραφο (αρχείο)
ΕΠΙΣΤΡΟΦΗ pdf.isΚρυπτογραφημένο

Θα χρησιμοποιήσετε αυτήν τη λειτουργία αργότερα για να βοηθήσετε το πρόγραμμα να αποφασίσει αυτόματα εάν θα κρυπτογραφήσει ή θα αποκρυπτογραφήσει το PDF εισόδου.

Κρυπτογράφηση του PDF

Δημιουργήστε μια συνάρτηση για την κρυπτογράφηση του PDF εισόδου. Η λειτουργία θα ελέγξει εάν το PDF είναι ήδη κρυπτογραφημένο. Εάν δεν είναι κρυπτογραφημένο, θα το κρυπτογραφήσει χρησιμοποιώντας τον αλγόριθμο AES-256. Αυτός είναι ο ισχυρότερος αλγόριθμος κρυπτογράφησης που προσφέρει το fitz. Θα αποθηκεύσει τελικά το κρυπτογραφημένο PDF.

defencrypt_pdf_file(pdf, κωδικός πρόσβασης, outfile, αρχείο):
ανδεν pdf_is_encrypted (αρχείο):
περμανάντ = int(
# Εξασφαλίστε όλους με το PDF
# μπορεί να έχει πρόσβαση
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # άδειες εκτύπωσης
| fitz. PDF_PERM_COPY # επιτρέπει την αντιγραφή
| fitz. PDF_PERM_ANNOTATE # σχολιασμοί αδειών
)

# Αλγόριθμος eΚρυπτογράφησης
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
permissions=perm)

αν pdf.save:
Τυπώνω("PDF κρυπτογραφημένο")

Αυτή η συνάρτηση αποθηκεύει το κρυπτογραφημένο PDF στη διαδρομή αρχείου που περνάτε στο όρισμα outfile.

Αποκρυπτογράφηση του κρυπτογραφημένου PDF

Δημιουργήστε μια λειτουργία αποκρυπτογράφησης. Αυτή η λειτουργία θα ελέγξει πρώτα εάν το αρχείο εισόδου είναι κρυπτογραφημένο. Εάν είναι κρυπτογραφημένο, θα ζητήσει από τον χρήστη να εισαγάγει τον κωδικό πρόσβασης. Στη συνέχεια, θα προσπαθήσει να ανοίξει το PDF χρησιμοποιώντας τον παρεχόμενο κωδικό πρόσβασης. Εάν ο κωδικός πρόσβασης είναι σωστός, το fitz θα αποκρυπτογραφήσει το PDF. Στη συνέχεια, θα αποθηκεύσει τα περιεχόμενα του αποκρυπτογραφημένου PDF σε άλλο μη προστατευμένο αρχείο PDF.

defdecrypt_pdf(αρχείο):
αν pdf_is_encrypted (αρχείο):
κωδικός πρόσβασης = εισαγωγή ('Εισαγάγετε κωδικό pdf:')
pdf = fitz.open (αρχείο)

αν pdf.authenticate (κωδικός πρόσβασης):
pdf.save('decrypted.pdf')

αν pdf.save:
Τυπώνω("Αποκρυπτογραφήθηκε το PDF")
αλλού:
Τυπώνω('Λάθος κωδικός')

Αυτός ο κωδικός αποθηκεύει το μη προστατευμένο PDF στον τρέχοντα κατάλογο εργασίας σας.

Το έχει αποκρυπτογραφήσει το προστατευμένο.pdf αρχείο και το αποθήκευσε ως αποκρυπτογραφημένο.pdf.

Έλεγχος της ροής του προγράμματος

Δημιουργήστε μια κύρια συνάρτηση που θα ελέγχει τη ροή του προγράμματός σας. Θα αποθηκεύσει τη διαδρομή του PDF εισόδου, θα καλέσει τη συνάρτηση κρυπτογράφησης και αποκρυπτογράφησης και θα μεταβιβάσει τις παραμέτρους εισόδου.

defκύριος():
# αντικαταστήστε τη διαδρομή του αρχείου είτε με αυτή του
# το pdf να κρυπτογραφηθεί ή να αποκρυπτογραφηθεί
αρχείο = 'sample.pdf'
pdf = fitz.open (αρχείο)
κωδικός πρόσβασης = 'pass123'
encrypt_pdf_file (pdf, κωδικός πρόσβασης, "protected.pdf", αρχείο)
decrypt_pdf (pdf)

Για να αλλάξετε το όνομα του κρυπτογραφημένου αρχείου PDF, αντικαταστήστε το "protected.pdf" με το δικό σας, φροντίζοντας να διατηρήσετε την επέκταση ".pdf".

Εκτέλεση της κύριας μεθόδου

Βεβαιωθείτε ότι η κύρια μέθοδος εκτελείται πρώτα:

αν __όνομα__ == '__κύριος__':
κύριος()

Αυτός ο κώδικας ελέγχει εάν το σενάριο εκτελείται ως το κύριο πρόγραμμα και όχι ως εισαγόμενη λειτουργική μονάδα. Εάν είναι το κύριο πρόγραμμα, καλεί την κύρια λειτουργία.

Προωθήστε τις δεξιότητές σας στην Python

Η δημιουργία ενός προγράμματος κρυπτογράφησης/αποκρυπτογράφησης PDF στην Python είναι ένα διασκεδαστικό αλλά προκλητικό έργο. Σας βοηθά να εξασκήσετε τις δεξιότητές σας στην Python και να κάνετε κύριο χειρισμό αρχείων με τη γλώσσα.

Για να προωθήσετε τις δεξιότητές σας, θα πρέπει να εργαστείτε σε περισσότερα έργα Python. Αυτό θα σας βοηθήσει να αλληλεπιδράσετε με περισσότερες βιβλιοθήκες και λειτουργικές μονάδες Python. Η Python είναι πολύ διαφορετική και μπορείτε να την εφαρμόσετε σε πολλούς τομείς για να εκτελέσετε διαφορετικές εργασίες.