Java-эквивалент шифрования OpenSSL AES CBC

Я не специалист по криптографии, и особенно из-за того, что в OpenSSL много недостающей документации, я не уверен, как мне решить эту проблему.

У меня есть внешняя система, которая ожидает получения зашифрованных сообщений. Единственный предоставленный пример использует OpenSSL следующим образом:

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

Гдеt.txt Файл содержит эту строку в одну строку:

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`

я нашелэтот Другой вопрос, и я смог сделать шифрование с помощью следующего кода:

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

Чего я не могу понять, так это как генерировать выходные данные (encryptedData), аналогичные тем, что делает OpenSSL. У меня есть соль, iv и cipherText, является ли закодированный в BaseSS выходной код OpenSSL результатом их объединения? или только один из них?

Единственная вещь, которой я делюсь с этой другой системой перед шифрованием, это парольная фраза. Как они могли расшифровать результат, если соль и количество итераций им неизвестны?

Может ли кто-нибудь дать ответы на эти неизвестные параметры, а также сказать мне, является ли приведенный выше код эквивалентом процесса OpenSSL?

Ответы на вопрос(4)

Ваш ответ на вопрос