
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
960
|
Chapter 17: Security
byte[] key = rijndael.Key;
byte[] IV = rijndael.IV;
// Create encryptor, and stream objects.
using (ICryptoTransform transform =
rijndael.CreateEncryptor(rijndael.Key, rijndael.IV))
{
using (CryptoStream cryptoStream = new
CryptoStream(memStream, transform,
CryptoStreamMode.Write))
{
// Write encrypted data to the MemoryStream.
cryptoStream.Write(originalStrAsBytes, 0,
originalStrAsBytes.Length);
cryptoStream.FlushFinalBlock( );
}
}
}
}
}
Discussion
To make sure your data is safe, you need to close the MemoryStream and CryptoStream
objects as soon as possible, as well as calling Dispose on the ICryptoTransform imple-
mentation to clear out any resources used in this encryption. The
using statement
makes this process much easier, makes your code easier to read, and leads to fewer
programming mistakes.
See Also
See the “SymmetricAlgorithm.Clear Method” and “AsymmetricAlgorithm.Clear Method”
topics in the MSDN documentation.
17.5 Verifying that a String Remains Uncorrupted
Following Transmission
Problem
You have some text that will be sent across a network to another machine for pro-
cessing. It is critical for you to verify that this text remains intact and unmodified
when it arrives at its destination.
Solution
Calculate a hash value from the string and append