Equivalente de Java de un cifrado OpenSSL AES CBC

No soy un profi de criptografía y, especialmente debido a que OpenSSL tiene mucha documentación faltante, no estoy seguro de cómo puedo resolver este problema.

Tengo un sistema externo que espera recibir mensajes cifrados. El único ejemplo proporcionado usa OpenSSL de esta manera:

$ openssl enc -aes-256-cbc -a -in t.txt -k testpass
U2FsdGVkX1/RUdaSJKRXhHv3zUyTsQwu5/ar2ECKDlrNyH5GL4xRR4fgxkiWqkS1
cQstcoSIgWfRPSOFj/5OtdNLeNXiVR6MxSKJ+NvS9LyUD8+Rg6XIcYUvxR4gHi3w
DWT44LAMCpRAh1Q0t4Z2g7rwb0D05T6ygLaWvB5zD/xGZD3brTqSlWmiJb9Imgda
M6soZO7BhbYdqWqEUl5r6+EbkD21f6L3NX3hJFo+BJ+VFctiAlBO8NwT5l4ogo/s
GErm8gqRr57XoX/kvKAimg==

Donde elt.txt El archivo contiene esta cadena en una línea:

AMOUNT=10&TID=#19:23&CURRENCY=EUR&LANGUAGE=DE&SUCCESS_URL=http://some.url/sucess&ERROR_URL=http://some.url/error&CONFIRMATION_URL=http://some.url/confirm&NAME=customer full name`

he encontradoesta otra pregunta y he podido hacer el cifrado usando el siguiente código:

String password = "passPhrase";
String salt = "15charRandomSalt";
int iterations = 100;

/* Derive the key, given password and salt. */
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(Charset.forName("UTF8")), iterations, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");

/* Encrypt the message. */
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters params = cipher.getParameters();
byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
byte[] cipherText = cipher.doFinal(toBeEncrypted.getBytes("UTF-8"));
encryptedData = Base64.getEncoder().encodeToString(cipherText);
encryptedData += Base64.getEncoder().encodeToString(iv);

Lo que no puedo entender es cómo debo generar un resultado similar (encriptado de datos) a lo que hace OpenSSL. Tengo el salt, iv y cipherText, ¿es el resultado codificado Base64 de salida de OpenSSL de una concatenación de estos? o solo uno de ellos?

Lo único que comparto con ese otro sistema antes del cifrado es la frase de paso. ¿Cómo podrían descifrar el resultado si la sal y el número de iteraciones no los conocen?

¿Alguien puede dar respuestas a esos parámetros desconocidos y también decirme si el código anterior es el equivalente del proceso OpenSSL?

Respuestas a la pregunta(4)

Su respuesta a la pregunta