Python を使用して PDF ファイルを暗号化および復号化する方法
機密ファイルへの不正アクセスは、今日よくある問題です。許可した人だけがファイルのコンテンツにアクセスできるようにするために、送信前にファイルを暗号化できます。
Python を使用して PDF ファイルを暗号化する方法と、元の状態に復号化する方法を学びます。
環境の設定
先に進むには、Python の基本に精通している必要があります。
Mac ターミナルまたは Windows コマンド ライン インターフェイスで、次のコマンドを実行して PyMuPDF ライブラリをインストールします。
pip install PyMuPDF
このライブラリは、PDF ファイルを開いて操作するのに役立ちます。
PyMuPDF のインストールが完了したら、コーディングを開始できます。
Fitz モジュールをインポートする
PyMuPDF ライブラリの fitz モジュールをインポートします。これにより、サポートされている関数を呼び出して使用できるようになります。
import fitz
PDF を開く、暗号化する、復号化する、保存するために fitz を使用します。
PDF が暗号化されているかどうかを確認する
PDF が既に暗号化されているかどうかをチェックし、ブール値を返す関数を作成します。
def pdf_is_encrypted(file):
pdf = fitz.Document(file)
return pdf.isEncrypted
後でこの関数を使用して、入力 PDF を暗号化するか復号化するかをプログラムが自動的に決定できるようにします。
PDF の暗号化
入力 PDF を暗号化する関数を作成します。この関数は、PDF が既に暗号化されているかどうかを確認します。暗号化されていない場合は、AES-256 アルゴリズムを使用して暗号化されます。これは、fitz が提供する最強の暗号化アルゴリズムです。最後に、暗号化された PDF を保存します。
def encrypt_pdf_file(pdf, password, outfile, file):
if not pdf_is_encrypted(file):
perm = int(
# Ensure everyone with the PDF
# can access it
fitz.PDF_PERM_ACCESSIBILITY
| fitz.PDF_PERM_PRINT # permits printing
| fitz.PDF_PERM_COPY # permits copying
| fitz.PDF_PERM_ANNOTATE # permits annotations
)
# eEncryption algorithm
encrypt_meth = fitz.PDF_ENCRYPT_AES_256
pdf.save(outfile, encryption=encrypt_meth, user_pw=password,
permissions=perm)
if pdf.save:
print("PDF encrypted")
この関数は、暗号化された PDF を outfile 引数で渡したファイル パスに保存します。
暗号化された PDF の復号化
復号化関数を作成します。この関数は、最初に入力ファイルが暗号化されているかどうかを確認します。暗号化されている場合は、ユーザーにパスワードの入力を求めるプロンプトが表示されます。次に、提供されたパスワードを使用して PDF を開こうとします。パスワードが正しければ、fitz は PDF を復号化します。次に、復号化された PDF の内容を別の保護されていない PDF ファイルに保存します。
def decrypt_pdf(file):
if pdf_is_encrypted(file):
password = input('Enter pdf password: ')
pdf = fitz.open(file)
if pdf.authenticate(password):
pdf.save('decrypted.pdf')
if pdf.save:
print("PDF decrypted")
else:
print('Incorrect Password')
このコードは、保護されていない PDF を現在の作業ディレクトリに保存します。
は、protected.pdfファイルを復号化し、 decrypted.pdfとして保存しました。
プログラムの流れを制御する
プログラムの流れを制御するメイン関数を作成します。入力 PDF のパスを保存し、暗号化および復号化関数を呼び出し、入力パラメーターを渡します。
def main():
# replace the file path with either that of
# the pdf to be encrypted or decrypted
file = 'sample.pdf'
pdf = fitz.open(file)
password = 'pass123'
encrypt_pdf_file(pdf, password, 'protected.pdf', file)
decrypt_pdf(pdf)
暗号化された PDF ファイルの名前を変更するには、「protected.pdf」を独自の名前に置き換えます。拡張子は「.pdf」のままにしてください。
メイン メソッドの実行
メイン メソッドが最初に実行されるようにします。
if __name__ == '__main__':
main()
このコードは、スクリプトがインポートされたモジュールではなく、メイン プログラムとして実行されているかどうかを確認します。メイン プログラムの場合は、メイン関数を呼び出します。
Python スキルを向上させる
Python で PDF の暗号化/復号化プログラムを作成するのは楽しいですが、やりがいのあるプロジェクトです。これは、言語を使用して Python のスキルとマスター ファイル処理を練習するのに役立ちます。
スキルを向上させるには、より多くの Python プロジェクトに取り組む必要があります。これにより、より多くの Python ライブラリやモジュールとやり取りすることができます。Python は非常に多様であり、多くの領域に適用してさまざまなタスクを実行できます。
コメントを残す