Я нашел проблему с функцией в конце. Это была комбинация преобразования ключа, IVEC и токена из Hex, удаления хеша MD5 ключа дешифрования и удаления декодирования Base64 получающегося в результате простого текста.
Символ заполнения, который привел к простому тексту, был немного странным, но он был удален с помощью rtrim (). Также стоит отметить, что изначально шифрование выполнялось в JSP с использованием некоторых стандартных библиотек Java, поэтому это может быть полезно для всех, кто выбирает Java Encryption → PHP Decryption.
Спасибо за вашу помощь VolkerK, вот функция, которую я в конечном итоге использовал (включая вашу шестнадцатеричную функцию, которую я не добавил ниже):
$algorithm = 'tripledes';
$key = 'F123ACA...'; // Some hex key
$ivec = 'FE12FA1...'; // Some hex ivec
$token = 'F2ACE12...'; // Some hex token
$mode = 'cbc';
$key = foo($key);
$ivec = foo($ivec);
$token = foo($token);
function decrypt($key,$iv,$algorithm,$mode,$token) {
$td = mcrypt_module_open($algorithm, '', $mode, '') ;
$iv = substr($iv, 0, mcrypt_enc_get_iv_size($td));
$expected_key_size = mcrypt_enc_get_key_size($td);
$key = substr($key, 0, $expected_key_size);
mcrypt_generic_init($td, $key, $iv);
$response = rtrim(mdecrypt_generic($td, $token), '');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $response;
}
$plaintext = decrypt($key,$ivec,$algorithm,$mode,$token);