Java-Äquivalent einer OpenSSL AES CBC-Verschlüsselung

Ich bin kein Kryptographie-Profi und insbesondere aufgrund der Tatsache, dass in OpenSSL viele Dokumente fehlen, bin ich mir nicht sicher, wie ich dieses Problem lösen kann.

Ich habe ein externes System, das den Empfang verschlüsselter Nachrichten erwartet. Das einzige Beispiel, das bereitgestellt wird, verwendet OpenSSL folgendermaßen:

$ 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==

Bei dem diet.txt Datei enthält diese Zeichenfolge in einer Zeile:

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`

Ich habe gefundenDie andere Frage und ich konnte die Verschlüsselung mit folgendem Code durchführen:

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);

Was ich nicht verstehen kann ist, wie ich eine ähnliche Ausgabe (encryptedData) erzeugen soll wie OpenSSL. Ich habe das Salt, iv und cipherText. Ist die OpenSSL-Ausgabe Base64-codiert, das Ergebnis einer Verkettung dieser? oder nur einer von ihnen?

Das einzige, was ich vor der Verschlüsselung mit diesem anderen System teile, ist die Passphrase. Wie können sie das Ergebnis entschlüsseln, wenn ihnen Salz und Anzahl der Iterationen nicht bekannt sind?

Kann jemand Antworten auf diese unbekannten Parameter geben und mir mitteilen, ob der obige Code dem OpenSSL-Prozess entspricht?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage