◾️はじめに
Pythonでのファイル暗号化・復号化のためのライブラリ python-gnupg について扱う
目次
【1】前提知識:GnuPG 1)python-gnupg以外のライブラリ「PGPy」 【2】python-gnupg 1)インストール 【3】サンプル 例1:キー生成・暗号化・復号化
【1】前提知識:GnuPG
* GnuPG(グヌー・ピー・ジー) = GNU Privacy Guard * OpenPGP (RFC4880)という仕様に従ってGNUが作成した オープンソースの暗号化ツール => 詳細は、以下の関連記事を参照のこと
gpgコマンド 〜 入門編 〜
https://dk521123.hatenablog.com/entry/2026/02/12/143942
1)python-gnupg以外のライブラリ「PGPy」
* OpenPGP規格(RFC 4880)に準拠した Pythonプログラム向けのPretty Good Privacy(PGP)ライブラリ => 詳細は、以下の関連記事を参照
Python 〜 PGPy 〜
https://dk521123.hatenablog.com/entry/2026/04/11/101026
【2】python-gnupg
* Pythonから GnuPGを利用するためのラッパーライブラリ
1)インストール
Step1: GnuPG のインストール
# Macの場合 brew install gnupg # Amazon Linux2023 dnf swap gnupg2-minimal gnupg2-full
https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/gnupg-minimal.html
確認
gpg --version
Step2: ライブラリのインストール
pip install python-gnupg
【3】サンプル
例1:キー生成・暗号化・復号化
import os import gnupg # --- 設定 --- os.makedirs('./gpg_home', exist_ok=True) gpg = gnupg.GPG(gnupghome='./gpg_home') # --- 鍵ペアを作成 --- input_data = gpg.gen_key_input( name_email='test@example.com', passphrase='testpass' ) key = gpg.gen_key(input_data) print("✅ 鍵ペアを作成しました:", key.fingerprint) # --- テスト用ファイル作成 --- with open('secret.txt', 'w') as f: f.write('これは秘密のメッセージです!') # --- ファイルを暗号化 --- with open('secret.txt', 'rb') as f: encrypted_data = gpg.encrypt_file( f, recipients=['test@example.com'], output='secret.txt.gpg' ) if encrypted_data.ok: print("🔒 暗号化成功: secret.txt.gpg") else: print("❌ 暗号化失敗:", encrypted_data.stderr) # --- ファイルを復号化 --- with open('secret.txt.gpg', 'rb') as f: decrypted_data = gpg.decrypt_file( f, passphrase='testpass', output='decrypted.txt' ) if decrypted_data.ok: print("🔓 復号化成功: decrypted.txt") else: print("❌ 復号化失敗:", decrypted_data.stderr)
関連記事
Python 〜 python-gnupg / 基本編 〜
https://dk521123.hatenablog.com/entry/2026/06/11/175208
Python 〜 python-gnupg / MDC 〜
https://dk521123.hatenablog.com/entry/2026/07/02/131449
Python ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/08/07/231242
Python 〜 PGPy 〜
https://dk521123.hatenablog.com/entry/2026/04/11/101026
gpgコマンド 〜 入門編 〜
https://dk521123.hatenablog.com/entry/2026/02/12/143942
gpgコマンド 〜基本編 〜
https://dk521123.hatenablog.com/entry/2026/04/08/160351
MWAA ~ gpg/python-gnupgを使うには ~
https://dk521123.hatenablog.com/entry/2026/06/12/001707