// Adapted from Subba Rao Thirumoorthy email on mono-devel-list (december 2003)
private byte[] NonMultipleOfBlockSize_Encrypt (ICryptoTransform ct, byte[] data)
{
DebugStream stream = new DebugStream ();
CryptoStream CryptStream = new CryptoStream (stream, ct, CryptoStreamMode.Write);
int len = 0;
long myLength = 0;
byte[] Buffer = new byte [1024];
DebugStream fout = new DebugStream (data);
while (myLength < data.Length) {
len = fout.Read (Buffer, 0, 1023);
if (len == 0)
break;
CryptStream.Write (Buffer, 0, len);
CryptStream.Flush ();
myLength = myLength + len;
}
CryptStream.FlushFinalBlock ();
// we must ensure that the result is correct
Assert.AreEqual (64, len, "Length(final)");
byte[] result = stream.ToArray ();
string end = BitConverter.ToString (result, 65520, 16);
Assert.AreEqual ("04-70-19-1D-28-C5-BD-9A-23-C6-60-E2-28-96-38-65", end, "End part");
CryptStream.Close();
stream.Close();
return result;
}