A máquina A tem OpenSSL 1.0.2k e eu criptografo um arquivo fictício como este:
openssl enc -aes-256-cbc -salt -in plain.txt -e -pass pass:abcd1234 -out cipher.enc
A máquina B tem o LibreSSL 3.3.3 e quando descriptografo o arquivo da máquina A assim:
openssl enc -aes-256-cbc -in cipher.enc -d -pass pass:abcd1234 -out plain.txt
Ele não consegue descriptografar, dando este erro:
descriptografia ruim
4444794304:error:06FFF064:rotinas de envelope digital:CRYPTO_internal:descriptografia ruim:evp/evp_enc.c:549:
Observe que, se eu tentar descriptografá-lo usando a mesma linha de comando na máquina A, funcionará bem.
Não sei o quão desatualizado o OpenSSL 1.0.2k está, mas infelizmente não tenho controle sobre a atualização (é um servidor remoto de terceiros).
Existe uma incompatibilidade entre OpenSSL e LibreSSL ao usar a criptografia AES?
Encontrei a solução, postando aqui caso ajude mais alguém que esteja enfrentando o mesmo problema.
Aparentemente, em uma versão posterior do OpenSSL (mais tarde LibreSSL), o algoritmo de hash padrão para derivação de chave foi alterado de md5 para sha256.
Mais detalhes aqui: https://github.com/libressl-portable/portable/issues/378
Então agora eu especifico explicitamente o algoritmo de hash nas duas linhas de comando. Para criptografar na Máquina A:
E para descriptografar na Máquina B:
E agora funciona bem.