Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Неоторизираният достъп до чувствителни файлове е често срещан проблем днес. За да сте сигурни, че само хората, които упълномощите, имат достъп до съдържанието на вашите файлове, можете да ги шифровате преди предаване.

Научете как да шифровате PDF файл с помощта на Python и как да го дешифрирате обратно в първоначалното му състояние.

Настройка на средата

За да следвате, трябва да сте запознати с основите на Python.

На терминал Mac или интерфейс на командния ред на Windows изпълнете следната команда, за да инсталирате библиотеката PyMuPDF:

pip инсталирайте PyMuPDF

Тази библиотека ще ви помогне да отваряте и манипулирате PDF файлове.

Когато приключите с инсталирането на PyMuPDF, вие сте готови да започнете да кодирате.

Пълният изходен код е достъпен в a GitHub хранилище.

Импортирайте модула Fitz

Импортирайте модул fitz на библиотеката PyMuPDF. Това ще ви позволи да се обаждате и да използвате функциите, които поддържа.

instagram viewer
импортиране фиц

Ще използвате fitz за отваряне, криптиране, дешифриране и запазване на PDF файловете.

Проверете дали PDF файлът е шифрован

Създайте функция, която ще проверява дали PDF вече е шифрован, връщайки булева стойност.

дефpdf_is_encrypted(файл):
pdf = фиц. Документ (файл)
връщане pdf.isEncrypted

Ще използвате тази функция по-късно, за да помогнете на програмата автоматично да реши дали да шифрова или декриптира входния PDF.

Шифроване на PDF

Създайте функция за шифроване на входния PDF. Функцията ще провери дали PDF вече е шифрован. Ако не е шифрован, той ще го шифрова с помощта на алгоритъма AES-256. Това е най-силният алгоритъм за криптиране, който fitz предлага. Най-накрая ще запази шифрования PDF файл.

дефкриптиране_pdf_файл(pdf, парола, изходящ файл, файл):
аконе pdf_is_encrypted (файл):
perm = int(
# Уверете се, че всички имат PDF
# има достъп до него
фиц. PDF_PERM_ACCESSIBILITY
| фиц. PDF_PERM_PRINT # позволява печат
| фиц. PDF_PERM_COPY # позволява копиране
| фиц. PDF_PERM_ANNOTATE # позволява анотации
)

# eEncryption алгоритъм
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (изходен файл, криптиране=encrypt_meth, user_pw=парола,
permissions=perm)

ако pdf.save:
печат („PDF кодиран“)

Тази функция записва шифрования PDF в пътя на файла, който подавате в аргумента outfile.

Дешифриране на шифрования PDF файл

Създайте дешифрираща функция. Тази функция първо ще провери дали входният файл е шифрован. Ако е криптирана, тя ще подкани потребителя да въведе паролата. След това ще се опита да отвори PDF файла с предоставената парола. Ако паролата е правилна, fitz ще дешифрира PDF файла. След това ще запази съдържанието на дешифрирания PDF файл в друг незащитен PDF файл.

дефдекриптиране_pdf(файл):
ако pdf_is_encrypted (файл):
парола = въвеждане(„Въведете парола за pdf:“)
pdf = fitz.open (файл)

ако pdf.authenticate (парола):
pdf.save('decrypted.pdf')

ако pdf.save:
печат („PDF дешифриран“)
друго:
печат ('Грешна парола')

Този код запазва незащитения PDF във вашата текуща работна директория.

The е дешифрирал защитен.pdf файл и го запази като дешифриран.pdf.

Контролиране на потока на програмата

Създайте основна функция, която ще контролира потока на вашата програма. Той ще съхрани пътя на входния PDF файл, ще извика функцията за шифроване и дешифриране и ще предаде входните параметри.

дефосновен():
# заменете пътя на файла с този на
# pdf файлът, който трябва да бъде криптиран или декриптиран
файл = "образец.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 е много разнообразен и можете да го прилагате в много области за изпълнение на различни задачи.