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


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

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

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; 

ИЗМЕНИТЬ: Если я использую режим ЕЦБ, я смогу заставить это работать. Тогда возникает некоторая проблема с CBC между 2.

Author: fhevol, 2012-09-06

1 answers

Использование режима ЕЦБ было правильным решением.

 0
Author: fhevol, 2013-01-06 03:21:36