CAST5を使用して対称的に暗号化された約20個のファイルがあります。私はすべてのファイルに適用されるパスワードがあり、実際に動作することを確認したいと思います。各ファイルを調べるスクリプトを作成しました。
read pass
for file in *.gpg ; do
if ! gpg --batch --passphrase "$pass" -d "$file" &>/dev/null ; then
echo "Passphrase invalid for '$file'."
fi
done
各ファイルのパスワードが有効であることを確認するには、ファイル全体を復号化する必要があります。これは非常に遅いです。私がやりたいことをより早く達成する方法はありますか?
答え1
gpg-agent
残念ながら、鍵がパスワードで保護されているかどうか尋ねる方法はありません。ただし、ファイルを確認するのではなく、各キーを一度だけ確認してください。したがって、まずどのキーが関連しているかを確認する必要があります。同じキーを2回確認する必要はありません(両方のファイルを復号化するために使用できます)。
私は自分自身をGnuPGのエキスパートだと思いますが、この作業をエレガントな方法で実行していないので、GnuPGメーリングリストに依頼したことを認める必要があります。そこから情報を入手したら、この回答を編集します。
編集1
マスターには数分しかかかりませんでした...解決策は次のとおりです。--list-only
gpg --status-fd 1 --list-only --list-packets file.gpg |
awk '$2 == "ENC_TO" {print "0x" $3; }'
キーIDを通知します。ファイルを復号化する前に、受信者キーの1つが確認済みキーのリストにあることを確認してください。
遅いのは非対称復号化です。それにもかかわらず、最小のものから始めてサイズでファイルをソートする必要があります。
上記のコマンドは、サブキーに対して暗号化されている場合にサブキーを提供します。本当に良い結果を得るには、サブキーを比較せずにその主キーを比較します。すべての一般的なインストールでは、マスターキーとサブキーは同じパスワードを持ちます(GnuPGを使用すると、異なるパスワードを提供する必要があります)。