У меня есть существующий формат данных, часть которого зашифрована в том, что похоже на AES в режиме CFB.Длина данных в незашифрованном виде и длина зашифрованных данных одинаковы.
В C # почти каждый угол, который я использовал, предполагает, что длина зашифрованного кода будет кратна размеру блока ...исключение при попытке расшифровки данных.
В исследованиях решений я использовал Crypto ++ и написал быстрое приложение на C ++, которое успешно расшифровывает данные, поэтому я уверен, что использую правильный алгоритм, ключи IV.Это прекрасно работает, но я бы хотел сохранить все внутри C #, если это вообще возможно.Любые предложения?
Рабочий код C ++ ниже:
//define key
unsigned char key[16];
//populate key
//...
//define iv
unsigned char iv[16];
//populate iv
//...
std::ifstream inFile;
//open file
inFile.open("file.aes",ios::binary );
//get file size
inFile.seekg(0,ios::end);
int fileSize = (int) inFile.tellg();
inFile.seekg(offset, ios::beg);
//read/close file
char* inBytes = new char[fileSize];
inFile.read(inBytes,fileSize);
inFile.close();
//configure decryption
CFB_Mode<AES>::Decryption cfbDecryption(key, 16, iv);
//populate output bytes
char* outBytes = new char[fileSize];
cfbDecryption.ProcessData((byte*) outBytes,(byte*) inBytes,fileSize);
//open/write/close output file
std::ofstream outFile;
outFile.open("out.dec");
outFile.write(outBytes,fileSize);
outFile.close();
delete[] inBytes;