получение зашифрованных данных фактического размера - PullRequest
1 голос
/ 10 мая 2011

В .NET Framework я пытаюсь зашифровать некоторые двоичные данные (используя RijndaelManaged), для расшифровки я использовал следующий пример кода (C ++ /. NET):

RijndaelManaged^ rjdAlg= gcnew RijndaelManaged;
rjdAlg->IV= IV;
rjdAlg->Key=this->key;
ICryptoTransform^ decryptor= rjdAlg->CreateDecryptor();
MemoryStream^ msDecrypt = gcnew MemoryStream(encryptedData);
CryptoStream^ csDecrypt = gcnewCryptoStream(msDecrypt,decryptor,CryptoStreamMode::Read);
array<unsigned char>^ decryptedData= gcnew array<unsigned char>(encryptedData->Length);
csDecrypt->Read(decryptedData,0,decryptedData->Length);

Теперь decryptedData содержитполезные данные в дополнение к нулям (как инициализация массива), как я могу получить фактический размер зашифрованных данных (если это была строка, я могу просто остановиться на первом пустом!).

1 Ответ

0 голосов
/ 10 мая 2011

Вам необходимо хранить длину отдельно, либо в виде первых N бит / байт ваших зашифрованных данных, либо вне зашифрованных данных.

Rijndael - это блочный шифр, что означает, что он всегда будет зашифровывать всеблоки, и вы всегда получаете целые блоки обратно при расшифровке.

...