6.11. Encrypting a DataSet

Problem

You need to encrypt and write a DataSet to a file for storage or transmission. You also need to decrypt the file and reconstruct the DataSet.

Solution

Encrypt and decrypt the DataSet using the .NET cryptographic services, and serialize and save the encrypted DataSet to a stream (such as a file or network stream).

The solution creates a DataSet that contains a subset of data from the Person.Contact table in AdventureWorks. The contents of the DataSet are output to the console.

Next, the DataSet is encrypted to a file named symmetric.dat in the same directory as the solution file EncryptDataSet.sln and decrypted using a (symmetric) DES algorithm. The contents of the decrypted DataSet are output to the console.

Finally, the DataSet is encrypted to a file named asymmetric.dat in the same directory as the solution file EncryptDataSet.sln and decrypted using both a (symmetric) RC2 algorithm and an (asymmetric) RSA algorithm. The contents of the decrypted DataSet are output to the console.

The C# code in Program.cs in the project EncryptDataSet is shown in Example 6-11.

Example 6-11. File: Program.cs for EncryptDataSet solution

using System; using System.Data; using System.Data.SqlClient; using System.Security.Cryptography; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Xml; namespace EncryptDataSet { [Serializable( )] internal class EncryptedMessage { public byte[] Body; // RC2 encrypted ...

Get ADO.NET 3.5 Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.