0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ変換とPGP暗号化の一気通貫バッチ

0
Last updated at Posted at 2026-08-28

はじめに

近年、企業内や企業間でのデータ連携やシステム統合の需要がますます高まっています。そこではデータの変換処理に加え、データの暗号化も極めて重要な要素となります。そこでデータ変換ツールDTRと、OpenPGP標準に準拠したオープンソースの暗号化ソフトウェア「GnuPG(Gpg4win)」を組み合わせ、データの変換からPGP暗号化までを一連のバッチ処理で自動実行してみました。
「データ変換とセキュリティ対策をシームレスに自動化したい」と考えているシステム担当者や開発者の方々にとって、本記事が具体的な実装の参考になれば幸いです。

エフティーアドニャン 暗号化 一気通貫

この画像はデータ変換と暗号化の一気通貫を視覚化したヒーローイメージです。自作キャラクター「エフティーアドニャン」を元に生成AIで作成しました。エフティーアドニャンはファイルの転送を見守るファイルの妖精という設定の架空のキャラクターです。

検証環境

以下の環境で検証しました。

  • OS:Windows 11 Enterprise
  • データ変換ソフトウェア:DTRII 5R22V
  • 暗号化ソフトウェア:Gpg4win 5.0.2

DTRは、BIPROGYが提供する高機能データ変換ツールです。DTRを使用することで、文字コードやファイル形式、レイアウトの違いに悩まされること無く、簡単にデータ変換することができます。また、データ変換の結果を使用して、高度なシステム連携を実施することができます。DTRIIはWindows版の商品名です。
https://www.biprogy.com/solution/service/dtr.html

Gpg4winはWindows環境向けのGnuPGのパッケージソフトウェアです。GnuPG: GNU Privacy Guard は暗号の規格OpenPGPに準拠した代表的なオープンソースソフトウェアです。Gpg4winはGnuPGに加えてGUI管理ツールKleopatraなどを同梱しています。
https://www.gpg4win.org/

やりたいこと

以前公開した記事「DTRで絵文字を漢字に置き換えてみた」では、ファイルの妖精「エフティーアドニャン」の食事記録を例に、DTRの外字変換機能を用いて絵文字を漢字へ変換するプロセスを解説しました。
https://qiita.com/rhaya/items/22e0b9b47cf7fd6d565c
今回はその応用編として、DTRによるデータ変換を行った直後に、GnuPGを用いてファイルを自動的に暗号化する実践的な仕組みを構築します。

前提

前提作業としてソフトウェアDTRとGpg4winの導入、鍵の生成があります。

DTR導入

  • インストールモジュールの 64\setup.exe ファイルをダブルクリックします。

  • セットアップウィザードが表示されるので,[次へ]ボタンをクリックします。

  • 導入ディレクトリ選択画面が表示されるので、導入ディレクトリを指定し、[次へ]ボタンをクリックします。
    デフォルト:[システムボリューム]:\dtr
    今回はC:\dtrとします。

  • インストールの確認画面で[次へ]ボタンをクリックします。

  • インストール完了画面が表示されれば導入完了です。

Gpg4win導入

  • Gpg4winのサイトからダウンロードしたインストーラを実行します。

  • Installer Language画面が表示されるため、Englishを選択し、OKをクリックします。
    ※Japaneseの選択肢はありませんが、導入されたソフトウェアは日本語対応しています。

  • Setup画面が表示されるのでNextをクリックします。

  • Choose Components画面に遷移するので、導入するコンポーネントを選択し、Nextをクリックします。
    GnuPG:必須
    Kleopatra:デフォルト導入
    GpgOL:デフォルト導入
    GpgOL/Web:デフォルト導入
    GpgEX:デフォルト導入
    Okular:デフォルト導入
    Browser integration:デフォルト非導入
    今回はデフォルトのままとします。

  • Choose Install Location画面に遷移するので、導入ディレクトリを指定し、Installをクリックします。
    デフォルト:C:\Program Files\Gpg4win
    今回はデフォルトのままとします。

  • Completing Gpg4win Setup画面が表示されるので、Finishをクリックします。

鍵の生成

コマンドプロンプトを起動し、鍵を生成します。

コマンドプロンプト
c:\ftadanyan>gpg --full-generate-key
gpg (GnuPG) 2.5.18; Copyright (C) 2025 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
   (9) ECC (署名と暗号化) *デフォルト
  (10) ECC (署名のみ)
  (14) カードに存在する鍵
  (16) ECC と Kyber
あなたの選択は?

最初に鍵の種類が尋ねられるため、数値を入力します。今回はRSA鍵を指定します。RSA: Rivest-Shamir-Adlemanは素因数分解の困難さを安全性の根拠とする公開鍵暗号の一種です。1977年に発明されました。発明者3名(Ronald Linn Rivest, Adi Shamir, Leonard Max Adleman)の姓の頭文字が名前の由来です。

鍵の長さを指定します。

コマンドプロンプト
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (3072)

鍵の有効期限を指定します。2年間ならば「2y」と入力します。

コマンドプロンプト
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は?

確認メッセージが表示されるため、想定通りならば「y」を入力します。

コマンドプロンプト
鍵はMM/DD/YY HH:MM:SS で期限切れとなります
これで正しいですか? (y/N)

ユーザID(名前とメールアドレス)を指定します。ここで指定する名前とアドレスは実在のものである必要はありません。

コマンドプロンプト
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: Ftadnyan
電子メール・アドレス: ftadnyan@hayashida.riki
コメント:
次のユーザIDを選択しました:
    "Ftadnyan <ftadnyan@hayashida.riki>"

確認メッセージが表示されるので、OKのOを入力します。

コマンドプロンプト
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)?

以下のメッセージの表示と並行して、GUIでパスフレーズ入力画面が表示されるのでパスフレーズを入力し、OKをクリックします。

コマンドプロンプト
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器に十分なエントロピーを供給する機会を与えることができます。

鍵が生成されます。

コマンドプロンプト
gpg: 失効証明書を 'C:\Users\<ユーザ名>\AppData\Roaming\gnupg\openpgp-revocs.d\<フィンガープリント>.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   rsa2048 YYYY-MM-DD [SC] [有効期限: YYYY-MM-DD]
      <フィンガープリント>
uid                      Ftadnyan <ftadnyan@hayashida.riki>
sub   rsa2048 YYYY-MM-DD [E] [有効期限: YYYY-MM-DD]
      <フィンガープリント>

フィンガープリントは鍵を識別するための電子指紋です。16進値40桁で表現されます。

今回は自己の環境で鍵を生成しますが、実案件では相手側から公開鍵を受領し、その公開鍵で暗号化することもあります。その場合は以下のコマンドでインポートします。

コマンドプロンプト
gpg --import <鍵ファイル>

変換と暗号化

それでは変換と暗号化を連続して実行します。
前掲記事「DTRで絵文字を漢字に置き換えてみた」で利用した以下のファイルを任意のディレクトリ(今回はC:\ftadnyan)に格納します。

  • 入力ファイルftadnyan-food-utf8.txt
  • 漢字変換テーブル変更ファイルktab.txt

以下のバッチファイルを作成し、上記ディレクトリに格納して実行します。

dtr.bat
C:\dtr\dtrnt '{ c8 k4,k6 k2,k4 }' -PQ 3 ftadnyan-food-utf8.txt  -A -S  ftadnyan-food-ktab.txt -K ktab.txt
gpg --batch --yes --trust-model always --encrypt --recipient <フィンガープリント> ftadnyan-food-ktab.txt

DTRコマンドの説明は前掲記事「DTRで絵文字を漢字に置き換えてみた」を参照ください。

ファイルの暗号化は以下のコマンドになります。

コマンドプロンプト
gpg --encrypt --recipient <フィンガープリント> <暗号化対象ファイル名>

これにバッチで自動実行するための以下のオプションを付します。
「--batch」:対話入力を禁止する
「--yes」:Yes/No の問い合わせに自動で Yes を選択する
「--trust-model always」:鍵の信頼性チェックを無視して使用する

--trust-model alwaysは鍵の信頼性チェックを省略するため、実運用では事前にフィンガープリントを検証した鍵に限りご利用ください。

バッチファイルを実行すると以下のファイルが生成されます。

  • dtrmsg:DTR実行ログ
  • ftadnyan-food-ktab.txt:DTR実行結果
  • ftadnyan-food-ktab.txt.gpg:上記を暗号化したファイル

dtrmsgでは正常終了が確認できます。

dtrmsg
BIPROGY データ変換プログラム
データ変換終了(5R22V)
 
入力ファイル名--ftadnyan-food-utf8.txt
入力レコード数:         3
出力ファイル名--ftadnyan-food-ktab.txt 
出力レコード数:         3

DTR実行結果のftadnyan-food-ktab.txtは前掲記事「DTRで絵文字を漢字に置き換えてみた」と同じく、絵文字が漢字に変換されました。

ftadnyan-food-ktab.txt
20260301朝食米
20260301昼食麺
20260301夕食鮨

ftadnyan-food-ktab.txt.gpgはテキストエディタで開くと意味不明な文字の羅列で暗号化されていることが分かります。

ftadnyan-food-ktab.txt.gpg
・・チQ}ク・!ウ莵)対ォ絡h`s(フ8エタ。・ア・nェ!ェ呰ツMャ鶚チEスヌツFaヌイヨ咥$C0d御痒昉偬縟ネ」>ナ孚ア=oI・秡%揃S゚1=(以下略)

復号

暗号化されたファイルを復号する場合は以下のコマンドです。

コマンドプロンプト
gpg --decrypt 暗号化ファイル.txt.gpg > 復号ファイル.txt

パスフレーズ入力画面Pinentryが表示されるので、パスフレーズを指定します。

GUIを出さずにコマンドだけで完結させるには、--pinentry-mode loopback を指定し、パスフレーズをコマンドラインまたはファイルから渡します。

方法1:コマンドラインで直接指定

コマンドプロンプト
gpg --batch --yes ^
    --pinentry-mode loopback ^
    --passphrase "パスフレーズ" ^
    --output 復号ファイル.txt ^
    --decrypt 暗号ファイル.txt.gpg

方法2:パスフレーズファイルを使う

コマンドプロンプト
gpg --batch --yes ^
    --pinentry-mode loopback ^
    --passphrase-file pass.txt ^
    --output 復号ファイル.txt ^
    --decrypt 暗号ファイル.txt.gpg

パスフレーズファイルpass.txtにはパスフレーズのみを記載します。

パスフレーズファイルは機密情報であるため、アクセス権を適切に制限してください。実行アカウントおよび管理者のみが参照できるようアクセス権を設定し、不要なユーザやグループの読み取り権限を付与しない運用を推奨します。

バッチ処理では方法2が優れています。コマンドラインに直接 --passphrase を記述すると、プロセスの履歴やバッチファイル内に生のパスフレーズが残るためです。

方法2で実行します。

コマンドプロンプト
c:\ftadnyan>gpg --batch --yes ^
More?     --pinentry-mode loopback ^
More?     --passphrase-file pass.txt ^
More?     --output エフティーアドニャン復号ファイル.txt ^
More?     --decrypt ftadnyan-food-ktab.txt.gpg
gpg: rsa3072鍵, ID <フィンガープリント後半>, 日付2026-08-08に暗号化されました
      "Ftadnyan <ftadnyan@hayashida.riki>"

エフティーアドニャン復号ファイル.txtが生成されました。その内容は暗号化前のftadnyan-food-ktab.txtと同一です。

エフティーアドニャン復号ファイル.txt
20260301朝食米
20260301昼食麺
20260301夕食鮨

この復号コマンドとDTRコマンドを組み合わせたバッチを作ることで、暗号化されたファイルを受け取り、それを復号して変換することも可能です。バッチ処理においてパスフレーズファイル(--passphrase-file)を活用する手法は、セキュリティを担保しつつ自動化を実現する実用的なアプローチです。

まとめ

本記事では、データ変換ツールDTRと暗号化ソフトウェアGnuPG(Gpg4win)を組み合わせ、データの変換からPGP暗号化までの一連の処理をバッチファイルで自動化する検証を行いました。

文字コードやレイアウトの違いを意識することなくスムーズにデータ変換を行えるDTRの強みと、OpenPGP標準に準拠したGnuPGによるセキュアな暗号化を連携させることで、企業間やシステム間におけるデータ連携の安全性と効率性を大幅に向上させることができます。

近年高まるデータ連携やシステム統合の需要において、データの変換とセキュリティ(暗号化)は切り離せない重要な要素です。本検証で構築した自動化の仕組みが、安全で効率的なシステム連携を実現する一助となれば幸いです。

We Are Hiring!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?