Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Nieautoryzowany dostęp do poufnych plików jest obecnie powszechnym problemem. Aby upewnić się, że tylko upoważnione przez Ciebie osoby będą miały dostęp do zawartości Twoich plików, możesz je zaszyfrować przed transmisją.

Dowiedz się, jak zaszyfrować plik PDF za pomocą Pythona i jak odszyfrować go z powrotem do pierwotnego stanu.

Konfigurowanie środowiska

Aby podążać dalej, powinieneś zapoznać się z podstawy Pythona.

Na terminalu Mac lub interfejsie wiersza poleceń systemu Windows uruchom następujące polecenie, aby zainstalować bibliotekę PyMuPDF:

pip zainstaluj PyMuPDF

Ta biblioteka pomoże Ci otwierać i przetwarzać pliki PDF.

Po zakończeniu instalacji PyMuPDF możesz rozpocząć kodowanie.

Pełny kod źródłowy jest dostępny w formacie Repozytorium GitHub.

Zaimportuj moduł Fitz

Zaimportuj moduł fitz biblioteki PyMuPDF. Umożliwi to dzwonienie i korzystanie z obsługiwanych funkcji.

instagram viewer
import Fitz

Będziesz używać fitz do otwierania, szyfrowania, odszyfrowywania i zapisywania plików PDF.

Sprawdź, czy plik PDF jest zaszyfrowany

Utwórz funkcję, która sprawdzi, czy plik PDF jest już zaszyfrowany, zwracając wartość logiczną.

pokpdf_is_encrypted(plik):
pdf = fitz. Plik dokumentu)
powrót pdf.isEncrypted

Użyjesz tej funkcji później, aby pomóc programowi automatycznie zdecydować, czy zaszyfrować, czy odszyfrować wejściowy plik PDF.

Szyfrowanie pliku PDF

Utwórz funkcję do szyfrowania wejściowego pliku PDF. Funkcja sprawdzi, czy plik PDF jest już zaszyfrowany. Jeśli nie jest zaszyfrowany, zaszyfruje go za pomocą algorytm AES-256. Jest to najsilniejszy algorytm szyfrowania oferowany przez Fitz. W końcu zapisze zaszyfrowany plik PDF.

pokzaszyfruj_plik_pdf(pdf, hasło, plik wyjściowy, plik):
Jeślinie pdf_is_encrypted (plik):
perm = int(
# Zapewnij wszystkim plik PDF
# może uzyskać do niego dostęp
Fitz. PDF_PERM_ACCESSIBILITY
| Fitz. PDF_PERM_PRINT # umożliwia drukowanie
| Fitz. PDF_PERM_COPY # umożliwia kopiowanie
| Fitz. PDF_PERM_ANNOTATE # zezwala na adnotacje
)

# Algorytm eSzyfrowania
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (plik wyjściowy, szyfrowanie=encrypt_meth, user_pw=hasło,
uprawnienia = uprawnienia)

Jeśli pdf.zapisz:
wydrukować(„PDF zaszyfrowany”)

Ta funkcja zapisuje zaszyfrowany plik PDF w ścieżce podanej w argumencie outfile.

Odszyfrowanie zaszyfrowanego pliku PDF

Utwórz funkcję deszyfrującą. Ta funkcja najpierw sprawdzi, czy plik wejściowy jest zaszyfrowany. Jeśli jest zaszyfrowany, poprosi użytkownika o podanie hasła. Następnie spróbuje otworzyć plik PDF przy użyciu podanego hasła. Jeśli hasło jest poprawne, fitz odszyfruje plik PDF. Następnie zapisze zawartość odszyfrowanego pliku PDF w innym niezabezpieczonym pliku PDF.

pokodszyfrować_pdf(plik):
Jeśli pdf_is_encrypted (plik):
hasło = wejście ('Wprowadź hasło pdf:')
pdf = fitz.open (plik)

Jeśli pdf.authenticate (hasło):
pdf.zapisz(„odszyfrowany.pdf”)

Jeśli pdf.zapisz:
wydrukować(„PDF odszyfrowany”)
w przeciwnym razie:
wydrukować('Niepoprawne hasło')

Ten kod zapisuje niezabezpieczony plik PDF w bieżącym katalogu roboczym.

The odszyfrował chroniony.pdf plik i zapisz go jako odszyfrowany.pdf.

Sterowanie przebiegiem programu

Utwórz główną funkcję, która będzie sterować przebiegiem Twojego programu. Przechowa ścieżkę wejściowego pliku PDF, wywoła funkcję szyfrowania i odszyfrowania oraz przekaże parametry wejściowe.

pokgłówny():
# zamień ścieżkę pliku na ścieżkę z
# PDF do zaszyfrowania lub odszyfrowania
plik = „próbka.pdf”
pdf = fitz.open (plik)
hasło = „przepustka123”
encrypt_pdf_file (pdf, hasło, „chroniony.pdf”, plik)
odszyfrować_pdf (pdf)

Aby zmienić nazwę zaszyfrowanego pliku PDF, zastąp „protected.pdf” własną nazwą, pamiętając o zachowaniu rozszerzenia „.pdf”.

Uruchamianie metody głównej

Upewnij się, że główna metoda działa jako pierwsza:

Jeśli __nazwa__ == '__główny__':
główny()

Ten kod sprawdza, czy skrypt jest uruchamiany jako program główny, a nie jako zaimportowany moduł. Jeśli jest to program główny, wywołuje funkcję główną.

Rozwiń swoje umiejętności w Pythonie

Tworzenie programu do szyfrowania/deszyfrowania plików PDF w Pythonie to zabawny, ale wymagający projekt. Pomaga ćwiczyć umiejętności Pythona i opanować obsługę plików w tym języku.

Aby rozwijać swoje umiejętności, powinieneś pracować nad większą liczbą projektów w Pythonie. Pomoże Ci to w interakcji z większą liczbą bibliotek i modułów Pythona. Python jest bardzo różnorodny i można go zastosować w wielu obszarach do wykonywania różnych zadań.