注意:以下はMacで行っています。また,完全に初心者ですので,ご容赦ください。
ageの導入
brew install age
ちなみに,このageはGo実装らしいですね。Rust実装のrageもあるみたいなのですが,今回は完全に初心者ということで,本家の方を使っていきます。
暗号化
まずはここで,ageのコマンドについてまとめておきます。
age [オプション] [入力ファイル]
| オプション | 短縮形 | 説明 |
|---|---|---|
--encrypt | -e | 暗号化する(デフォルトの動作なので省略可能です)。 |
--decrypt | -d | 復号する。暗号化されたファイルを元に戻します。 |
--passphrase | -p | パスフレーズを使用します。鍵ファイルを持っていない相手に送る時に便利です。 |
--recipient | -r | 受信者の公開鍵を指定して暗号化します(複数指定してマルチキャストも可能)。 |
--recipients-file | -R | 複数の公開鍵が書かれたファイルを指定して暗号化します。 |
--identity | -i | **自分の秘密鍵(Identityファイル)**を指定して復号します。 |
--output | -o | 出力先ファイルを指定します(リダイレクト > の代わり)。 |
--armor | -a | 出力をバイナリではなく、**テキスト形式(PEM)**にします。メールやチャットに貼り付けたい時に便利です。 |
--suffix | (なし) | 出力ファイル名に .age などの拡張子を自動で付与します。 |
暗号化のコマンド
age -e -p -a [入力ファイル]
このままだと,age -p のバイナリがターミナルに流れるので
age -p -a [入力ファイル] > [暗号化ファイル]のようにリダイレクトしましょう。-eは省略可能です。
復号用コマンド
age -d [暗号ファイル] > [元のファイル]
実際にやってみる
abc
と書かれたtest.txtファイルを作りましょう。
age -p -a test.txt
これを打つと,パスワード入力が促され
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBveGdjRUhNUVZBTGNKeUFX
NnZpL0tnIDE4Cng2U0FvRnNjT0JCcitiVElEMXJmNEhDR0hwVG1qSElBZjl6NTlI
d3IvNUUKLS0tIHk2VnNGelZzT1A3TWUrcFA4V2MvUU1DMXNydWx0NHVjZDZBRlVL
NHdYdjAKqZIEK/mL/0kH0pFguLkAzSk0kyvEb7nbczGUEgu2+Xb5fvE=
-----END AGE ENCRYPTED FILE-----
とターミナルに表示されます。
これを
age -p -a test.txt > out.txt
とすればこれが書かれたtxtファイルが生成されます。
では,復号もやってみましょう。
age -d out.txt
これを打って,パスワードを入れると,abcとターミナルに表示されます。
ファイルに出力したい場合は,
age -d out.txt > decode.txt
とすればOKです。
複数ファイルまとめて
tarを使います。
tests/test1.txt、tests/test2.txt、tests/test3.txtを作成して,中身を書いておきます。中身は区別できるように適当につけておきましょう。
cat tests/*
111
222
333
今回はこのようにしておきました。
では,testsフォルダがあるディレクトリにいる状態で,tarを実行していきましょう。
tarコマンド
一応tarコマンドをまとめておきます。
| オプション | 意味 | 補足 |
|---|---|---|
-c | 作成 (Create) | まとめる時 |
-x | 展開 (eXtract) | 取り出す時 |
-v | 詳細 (Verbose) | ログを表示 |
-z | 圧縮 (Gzip) | サイズを小さくする |
-f | ファイル指定 | 出力/入力ファイルを指定 |
簡単に練習しましょう。
tar czf tests.tar.gz tests/
これで,tests.tar.gzというファイルが生成されました。ちなみに,-vオプションを追加すると実行時に以下のような詳細な出力が見られます。必須ではないので,なくても問題ありません。
tar czvf tests.tar.gz tests/
a tests
a tests/test1.txt
a tests/test2.txt
a tests/test3.txt
では,これを展開して戻していきます。
tar xzf tests.tar.gz
まとめて暗号化
では,testsの中身をまとめて暗号化します。
tar czf - tests/ | age -p -a > tests.tar.gz.age
tarの出力ファイル指定(-fオプション)は,パイプで繋いでいるので標準出力(-)を指定します。同様にageの入力ファイル指定も今回はパイプで繋いでいるので指定する必要ありません。
では,復号していきましょう。
age -d tests.tar.gz.age | tar xzf -
今回はageの入力ファイル指定は必要です。ただ,パイプで繋いでいるのでtarの展開の入力ファイルは標準入力(-)を指定します。
復号できたら,catで中身をみていきましょう。
cat tests/*
111
222
333
完璧ですね。