🔑

コマンドラインでファイルやフォルダを暗号化する方法 (GPG 編)

2024/02/07に公開

OpenSSL 版は こちら

忙しい人向け

# フォルダを圧縮
zip -r foo.zip foo

# 暗号化
gpg --encrypt --recipient you@example.com foo.zip          # バイナリデータ
gpg --encrypt --recipient you@example.com --armor foo.zip  # アスキーデータ

# 復号
gpg foo.zip.gpg
バイナリデータ アスキーデータ
利点 ファイルサイズが元のファイルと変わらない テキストエディタで開ける
欠点 テキストエディタでは開けない ファイルサイズが膨らむ
拡張子 .gpg .asc

はじめに

前回は openssl コマンドを使ってファイルを暗号化する方法について紹介しました。

コマンドラインでファイルを暗号化する方法 (OpenSSL 編)

しかし openssl コマンドによる暗号化だとファイルサイズが大きいファイルを正しく暗号化できないというデメリットがあります。

そこで今回は gpg コマンドを使ってファイル・フォルダを暗号化する方法について解説します。

前提

  • gpg コマンドはインストール済みであること
  • GPG キー (秘密鍵) は生成済みであること

フォルダを圧縮

フォルダを直接的に暗号化することはできませんので、まずはフォルダを圧縮して ZIP ファイルにまとめます。フォルダではなくファイルを暗号化する場合はこの手順はスキップしてください。

カレントディレクトリにある foo というフォルダを圧縮するには以下のコマンドを実行します。

zip -r foo.zip foo

フォルダを圧縮する際は -r を付け忘れないように注意しましょう。付け忘れると空 ZIP ファイルになります。

暗号化

ファイルを暗号化するには以下のコマンドを実行します。

gpg --encrypt --recipient you@example.com foo.zip

拡張子が .gpg のバイナリファイルが生成されるはずです。

バイナリデータではなくアスキーデータ (テキストエディタで開ける形式) として保存したい場合は以下のように --armor オプションを付与します。

gpg --encrypt --recipient you@example.com --armor foo.zip

拡張子が .asc のファイルが生成されます。このファイルはテキストエディタで開くことができます。ただしファイルサイズによっては開くと重くなりますのでご注意ください。

バイナリデータとアスキーデータの違い

両者とも復号すれば全く同じファイルが復元できるため、基本的にはどちらでも良いと思います。主な違いは以下のとおりです。

バイナリデータ アスキーデータ
利点 ファイルサイズが元のファイルと変わらない テキストエディタで開ける
欠点 テキストエディタでは開けない ファイルサイズが膨らむ[1]
拡張子 .gpg .asc

復号

暗号化したファイルを復号するには以下のコマンドを実行します。

gpg foo.zip.gpg

元のファイル foo.zip が生成されるはずです。

参考

脚注
  1. 筆者の環境で 1.37 GB の ZIP ファイルをこの方法で暗号化したところ 1.85 GB になりました。 ↩︎

GitHubで編集を提案

Discussion