【bat】バッチファイルでファイル暗号化と復号を行う|certutilとopensslの活用術

【bat】バッチファイルでファイル暗号化と復号を行う|certutilとopensslの活用術 bat

Windows環境で簡易的にファイルの暗号化・復号を行いたい場面は多々あります。バッチファイルと組み合わせることで、業務ファイルの安全なやり取りやバックアップファイルの保護を自動化することも可能です。本記事では、certutilおよびOpenSSLを利用した暗号化・復号処理をバッチファイルで実装する方法を紹介します。

certutilでのファイル暗号化と復号

Windows標準コマンドであるcertutilを使えば、簡易的なエンコード・デコードが可能です。ただしこれはあくまで「エンコード」であり、本格的な暗号化ではない点に注意してください。

Base64形式でエンコード

@echo off
set INPUT_FILE=sample.txt
set OUTPUT_FILE=sample.enc

certutil -encode %INPUT_FILE% %OUTPUT_FILE%
echo ファイルをBase64形式でエンコードしました。

Base64形式からデコード

@echo off
set INPUT_FILE=sample.enc
set OUTPUT_FILE=sample_decoded.txt

certutil -decode %INPUT_FILE% %OUTPUT_FILE%
echo ファイルをデコードしました。

certutilは簡易変換に適しており、ログファイルなどの整形にも使われます。

OpenSSLでの強力な暗号化と復号

セキュアなファイル暗号化には、OpenSSLの使用が推奨されます。OpenSSLは無料で使用できる強力な暗号化ライブラリであり、コマンドラインでも簡単に扱えます。

事前準備

WindowsでOpenSSLを使用するには、以下からバイナリをインストールしてください。
Win32/64 OpenSSL – slproweb

AES-256-CBCで暗号化

@echo off
set INPUT_FILE=secret.txt
set OUTPUT_FILE=secret.enc
set PASSWORD=mypassword

openssl enc -aes-256-cbc -salt -in %INPUT_FILE% -out %OUTPUT_FILE% -k %PASSWORD%
echo ファイルを暗号化しました。

復号化処理

@echo off
set INPUT_FILE=secret.enc
set OUTPUT_FILE=secret_decrypted.txt
set PASSWORD=mypassword

openssl enc -aes-256-cbc -d -in %INPUT_FILE% -out %OUTPUT_FILE% -k %PASSWORD%
echo ファイルを復号しました。

OpenSSLでは-kでパスフレーズを指定できますが、セキュリティを重視する場合は-passで外部ファイルを使うことを推奨します。

セキュリティと運用上の注意

暗号化バッチを運用する際は、以下のポイントに注意してください。

  • パスワードの平文記載は避け、別ファイルで管理
  • 復号処理は必要なときのみ実行できるように制御
  • ログ出力やエラーハンドリングを組み込んで信頼性を高める

まとめ

バッチファイルにcertutilOpenSSLを組み込むことで、簡単かつ自動化された暗号化・復号処理が実現できます。セキュリティ要件に応じて、処理方式や管理方法を選定することが重要です。システム内での機密ファイル管理やバックアップファイルの保護に、ぜひ応用してみてください。