ファイルをstdoutに復号化し、その内容を指定されたコマンドにパイプしようとします。たとえば、cat
コマンド、wc
コマンドなどがあります。しかし、以下のコマンドを単純化できる他のアイデアがありますか?
echo "openssl enc -aes-256-cbc -in "$(read -p "enter file:" fp && echo \"$fp\")" -k "$(read -s -p "enter passwd:" pswd && echo \"$pswd\")" -d | "$(read -p "enter command:" cmd && echo \"$cmd\")" " | xargs -0 -I{} /usr/bin/bash -c {}
完全性のためにファイルを暗号化して復号化するコマンドは次のとおりです。
暗号化されたファイル(パスワードで保護)
openssl enc -aes-256-cbc -in in.txt -out out.txt -e
ファイルの復号化
openssl enc -aes-256-cbc -in out.txt -k hello -d
もちろん、サポートされているすべてのパスワードを使用できます。
答え1
不必要に複雑にします。必要なのはいくつかの便利な機能だけです。
enc () {openssl enc -aes-256-cbc -in "$@"}
dec () {openssl enc -d -aes-256-cbc -in "$@"}
パスワードまたはキーを入力しないと、openssl
パスワードまたはキーの入力を求められます。つまり、対応するパスワードやキーをコマンドに書き込む必要はありません。
ファイルを暗号化するには:
enc foo > foo.enc
ファイルの復号化:
dec foo.enc
これは自然に他のコマンドにパイプすることができます。
dec foo.enc | wc -l
答え2
プログラミングの観点からは、ビジネスロジックをユーザーインターフェイスから分離する必要があります。ファイルのパスワードを復号化し、別の場所でオプションをビルドするだけです。