Eu descobri!
O php usa iv
e key
variables como strings, e a openssl
CLI precisa da versão hexadecimal das strings, sem espaços e novas linhas como mostrarei.
Primeiro, preciso converter as cadeias iv e pass para hexadecimal usando:
Determine o equivalente hexadecimal IV:
hexiv=$(echo $(echo -n '3571984260' | od -A n -t x1) | tr -d " ")
Determine o equivalente hexadecimal mysecret
:
hexpass=$(echo $(echo -n 'mysecret' | od -A n -t x1) | tr -d " ")
Agora mais uma coisa que o passe para php não é o passe para o openssl cli mas o KEY:
echo -n '12345' | openssl enc -aes-256-cbc -iv "$hexiv" -K "$hexpass" -a
E agora está funcionando exatamente como o script php!
Importante: eu precisava usar -K
em maiúsculas ou a string gerada não é a mesma.