Могу ли я дешифровать данные на C ++, зашифрованном через PHP?

Я использую mcrypt_encrypt и base64_encode для шифрования данных на php. Я пробовал расшифровать данные на C ++, но безрезультатно. У меня есть логика C ++ Rijndael, которую я использовал в течение многих лет, а также логику base64_decode. Последний декодирует строки, закодированные базовым процессором php base64_encode. Я использую CBC как с php, так и с C ++. Я экспериментировал с разными размерами блоков и т. Д., Но безрезультатно. Любые советы очень оценили.

Это моя тестовая логика:

PHP

$key = "qwertyuiopasdfghjklzxcvbnmqwerty"; $iv = "12345678901234561234567890123456"; $text = "this is the text to encrypt"; $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv); echo base64_encode($crypttext)."<br/>"; 

C ++

 char* base64encode = ".. output from php..."; unsigned char binaryData[256]; int binaryNumBytes; char result[256]; base64_decode(reinterpret_cast<unsigned char*>(base64encode), strlen(base64encode), binaryData, &binaryNumBytes, false); Encryption::Rijndael rijndael; char* key = "qwertyuiopasdfghjklzxcvbnmqwerty"; char* iv = "12345678901234561234567890123456"; rijndael.Init(Encryption::Rijndael::CBC, reinterpret_cast<const char*>(key), 32, 32, reinterpret_cast<const char*>(iv)); rijndael.Decrypt(reinterpret_cast<const char*>(binaryData), reinterpret_cast<char*>(result), 32); cout << result << endl; 

EDIT: Если я использую режим ECB, я могу заставить это работать. Существует некоторая проблема с CBC между двумя.

Использование режима ECB – это путь.