openssl は stdin からコマンドを受け取ることができます
たとえばonetime_keyfile
、次の内容でキーと IV を指定する場合
-K 42AB7FCE7BFEEE03E16719044916CBD475F6D000F230D213FF0F4775EF8D46F5 -iv D5C21AC249B26A1FBA376E8CFCDC4E1A
次に、次のコマンドはその情報を使用してファイルを暗号化します
umask 077
echo -n "enc -aes-256-cbc -in message_file -out message_file.enc " > encrypt_command_file
cat onetime_keyfile >> encrypt_command_file
openssl < encrypt_command_file
質問では、キー、初期化ベクトル、ソルトの両方を指定していることに注意してください。その場合、salt 引数は無視されます。ソルトは、パス フレーズからキーと iv を導出するためにのみ使用されます。key と iv を明示的に指定する場合は、独自のソルト アルゴリズムを使用して、暗号化するファイルごとに一意のキーと iv を生成する必要があります。したがって、実際の使用では、上記の例のファイル onetime_keyfile を別のプログラムからの出力として生成する必要があります。
パスフレーズとソルトからキーと IV を生成する標準アルゴリズムの詳細については、https://www.openssl.org/docs/crypto/EVP_BytesToKey.htmlを参照してください。
独自のソルティングを行っていない場合は、-kfile または -pass オプションを使用して、ファイルからパス フレーズを読み取ることをお勧めします。