Qualunque cosa tu faccia, non provare a specificare più -pass
argomenti come @mootmoot suggerisce nei commenti. Solo l'ultima si applica, come può essere visto banalmente da:
echo test | openssl enc -aes-256-cbc -salt -pass file:key -pass pass:password | openssl enc -d -aes-256-cbc -salt -pass pass:password
Supponendo che stai cercando di richiedere sia la password che il file di chiavi per decrittografare, il modo più semplice sarebbe semplicemente unirli, anche se questo si tradurrà in un leggero aumento delle dimensioni:
$ echo test | openssl enc -aes-256-cbc -salt | openssl enc -aes-256-cbc -salt -pass file:key >testout
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
$ <testout openssl enc -d -aes-256-cbc -salt -pass file:key | openssl enc -d -aes-256-cbc -salt
enter aes-256-cbc decryption password:
test
Dovresti sapere che la derivazione della chiave openssl enc
è abbastanza terribile. 0.9.8 assume come valore predefinito MD5 e, mentre consente di selezionare un altro hash, consente solo un round di hash(password || salt)
. 1.1.0 modifica l'hash predefinito a SHA256, ma consente comunque un singolo round, quindi il miglioramento è molto minore.
Ho anche visto questo quote da uno sviluppatore openssl a cui si fa riferimento più volte:
At the end of the day, OpenSSL is a *library*, not an end-user product,
and enc(1) and friends are developer utilities and "demo" tools.
È del 2009, quindi non so quanto è cambiato da allora (credo che l'utilità cms
sia ok), ma ti consiglio di evitare enc
se possibile.