У меня есть зашифрованная строка, которая была зашифрована с помощью Perl Crypt::CBC (Rijndael, cbc). Исходный открытый текст был зашифрован с помощью метода encrypt_hex() Crypt::CBC.
$encrypted_string = '52616e646f6d49567b2c89810ceddbe8d182c23ba5f6562a418e318b803a370ea25a6a8cbfe82bc6362f790821dce8441a790a7d25d3d9ea29f86e6685d0796d';
У меня есть 32-символьный ключ, который использовался.
mcrypt успешно скомпилирован в PHP, но мне очень трудно расшифровать строку в PHP. Я продолжаю получать тарабарщину обратно.
Если я распаковываю ("H*", $encrypted_string), я вижу "RandomIV", за которым следует то, что выглядит как двоичный файл.
Кажется, я не могу правильно извлечь IV и отделить фактическое зашифрованное сообщение. Я знаю, что не предоставляю свою информацию, но я не уверен, с чего еще начать.
$cipher = 'rijndael-256';
$cipher_mode = 'cbc';
$td = mcrypt_module_open($cipher, '', $cipher_mode, '');
$key = '32 characters'; // Does this need to converted to something else before being passed?
$iv = ?? // Not sure how to extract this from $encrypted_string.
$token = ?? // Should be a sub-string of $encrypted_string, correct?
mcrypt_generic_init($td, $key, $iv);
$clear = rtrim(mdecrypt_generic($td, $token), '');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
echo $clear;
Любая помощь, указатели в правильном направлении, будет принята с благодарностью. Дайте мне знать, если мне нужно предоставить дополнительную информацию.