在.NET框架中,我正在尝试加密一些二进制数据(使用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包含除空值之外的有用数据(作为数组初始化),如何获得加密数据的实际大小(如果是字符串我可以在第一个空值处停止!)。
答案 0 :(得分:0)
您需要单独存储长度,可以是加密数据的前N位/字节,也可以是加密数据之外。
Rijndael是一个分组密码,这意味着它将始终对整个块进行加密,并且在解密时总是会恢复整个块。