TripleDESCryptoServiceProvider Class
Defines a wrapper object to access the cryptographic service provider (CSP) version of the TripleDES algorithm. This class cannot be inherited.
System.Security.Cryptography.SymmetricAlgorithm
System.Security.Cryptography.TripleDES
System.Security.Cryptography.TripleDESCryptoServiceProvider
Namespace: System.Security.Cryptography
Assembly: mscorlib (in mscorlib.dll)
The TripleDESCryptoServiceProvider type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | TripleDESCryptoServiceProvider | Initializes a new instance of the TripleDESCryptoServiceProvider class. |
| Name | Description | |
|---|---|---|
![]() | BlockSize | Gets or sets the block size, in bits, of the cryptographic operation. (Inherited from SymmetricAlgorithm.) |
![]() | FeedbackSize | Gets or sets the feedback size, in bits, of the cryptographic operation. (Inherited from SymmetricAlgorithm.) |
![]() | IV | Gets or sets the initialization vector (IV) for the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | Key | Gets or sets the secret key for the TripleDES algorithm. (Inherited from TripleDES.) |
![]() | KeySize | Gets or sets the size, in bits, of the secret key used by the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | LegalBlockSizes | Gets the block sizes, in bits, that are supported by the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | LegalKeySizes | Gets the key sizes, in bits, that are supported by the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | Mode | Gets or sets the mode for operation of the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | Padding | Gets or sets the padding mode used in the symmetric algorithm. (Inherited from SymmetricAlgorithm.) |
| Name | Description | |
|---|---|---|
![]() | Clear | Releases all resources used by the SymmetricAlgorithm class. (Inherited from SymmetricAlgorithm.) |
![]() | CreateDecryptor() | Creates a symmetric decryptor object with the current Key property and initialization vector (IV). (Inherited from SymmetricAlgorithm.) |
![]() | CreateDecryptor(Byte[], Byte[]) | Creates a symmetric TripleDES decryptor object with the specified key (Key) and initialization vector (IV). (Overrides SymmetricAlgorithm.CreateDecryptor(Byte[], Byte[]).) |
![]() | CreateEncryptor() | Creates a symmetric encryptor object with the current Key property and initialization vector (IV). (Inherited from SymmetricAlgorithm.) |
![]() | CreateEncryptor(Byte[], Byte[]) | Creates a symmetric TripleDES encryptor object with the specified key (Key) and initialization vector (IV). (Overrides SymmetricAlgorithm.CreateEncryptor(Byte[], Byte[]).) |
![]() | Dispose() | Releases all resources used by the current instance of the SymmetricAlgorithm class. (Inherited from SymmetricAlgorithm.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | GenerateIV | Generates a random initialization vector (IV) to use for the algorithm. (Overrides SymmetricAlgorithm.GenerateIV().) |
![]() | GenerateKey | Generates a random Key to be used for the algorithm. (Overrides SymmetricAlgorithm.GenerateKey().) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | ValidKeySize | Determines whether the specified key size is valid for the current algorithm. (Inherited from SymmetricAlgorithm.) |
This algorithm supports key lengths from 128 bits to 192 bits in increments of 64 bits.
Note |
|---|
A newer symmetric encryption algorithm, Advanced Encryption Standard (AES), is available. Consider using the AesCryptoServiceProvider class instead of the TripleDESCryptoServiceProvider class. Use TripleDESCryptoServiceProvider only for compatibility with legacy applications and data. |
The following code example creates a TripleDESCryptoServiceProvider object and uses it to encrypt and decrypt data in a file.
using System; using System.Security.Cryptography; using System.Text; using System.IO; class TrippleDESCSPSample { static void Main() { try { // Create a new TripleDESCryptoServiceProvider object // to generate a key and initialization vector (IV). TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider(); // Create a string to encrypt. string sData = "Here is some data to encrypt."; string FileName = "CText.txt"; // Encrypt text to a file using the file name, key, and IV. EncryptTextToFile(sData, FileName, tDESalg.Key, tDESalg.IV); // Decrypt the text from a file using the file name, key, and IV. string Final = DecryptTextFromFile(FileName, tDESalg.Key, tDESalg.IV); // Display the decrypted string to the console. Console.WriteLine(Final); } catch (Exception e) { Console.WriteLine(e.Message); } } public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV) { try { // Create or open the specified file. FileStream fStream = File.Open(FileName,FileMode.OpenOrCreate); // Create a CryptoStream using the FileStream // and the passed key and initialization vector (IV). CryptoStream cStream = new CryptoStream(fStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key,IV), CryptoStreamMode.Write); // Create a StreamWriter using the CryptoStream. StreamWriter sWriter = new StreamWriter(cStream); // Write the data to the stream // to encrypt it. sWriter.WriteLine(Data); // Close the streams and // close the file. sWriter.Close(); cStream.Close(); fStream.Close(); } catch(CryptographicException e) { Console.WriteLine("A Cryptographic error occurred: {0}", e.Message); } catch(UnauthorizedAccessException e) { Console.WriteLine("A file access error occurred: {0}", e.Message); } } public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV) { try { // Create or open the specified file. FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate); // Create a CryptoStream using the FileStream // and the passed key and initialization vector (IV). CryptoStream cStream = new CryptoStream(fStream, new TripleDESCryptoServiceProvider().CreateDecryptor(Key,IV), CryptoStreamMode.Read); // Create a StreamReader using the CryptoStream. StreamReader sReader = new StreamReader(cStream); // Read the data from the stream // to decrypt it. string val = sReader.ReadLine(); // Close the streams and // close the file. sReader.Close(); cStream.Close(); fStream.Close(); // Return the string. return val; } catch(CryptographicException e) { Console.WriteLine("A Cryptographic error occurred: {0}", e.Message); return null; } catch(UnauthorizedAccessException e) { Console.WriteLine("A file access error occurred: {0}", e.Message); return null; } } }
The following code example creates a TripleDESCryptoServiceProvider object and uses it to encrypt and decrypt data in memory.
using System; using System.Security.Cryptography; using System.Text; using System.IO; class TrippleDESCSPSample { static void Main() { try { // Create a new TripleDESCryptoServiceProvider object // to generate a key and initialization vector (IV). TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider(); // Create a string to encrypt. string sData = "Here is some data to encrypt."; // Encrypt the string to an in-memory buffer. byte[] Data = EncryptTextToMemory(sData, tDESalg.Key, tDESalg.IV); // Decrypt the buffer back to a string. string Final = DecryptTextFromMemory(Data, tDESalg.Key, tDESalg.IV); // Display the decrypted string to the console. Console.WriteLine(Final); } catch (Exception e) { Console.WriteLine(e.Message); } } public static byte[] EncryptTextToMemory(string Data, byte[] Key, byte[] IV) { try { // Create a MemoryStream. MemoryStream mStream = new MemoryStream(); // Create a CryptoStream using the MemoryStream // and the passed key and initialization vector (IV). CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV), CryptoStreamMode.Write); // Convert the passed string to a byte array. byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data); // Write the byte array to the crypto stream and flush it. cStream.Write(toEncrypt, 0, toEncrypt.Length); cStream.FlushFinalBlock(); // Get an array of bytes from the // MemoryStream that holds the // encrypted data. byte[] ret = mStream.ToArray(); // Close the streams. cStream.Close(); mStream.Close(); // Return the encrypted buffer. return ret; } catch(CryptographicException e) { Console.WriteLine("A Cryptographic error occurred: {0}", e.Message); return null; } } public static string DecryptTextFromMemory(byte[] Data, byte[] Key, byte[] IV) { try { // Create a new MemoryStream using the passed // array of encrypted data. MemoryStream msDecrypt = new MemoryStream(Data); // Create a CryptoStream using the MemoryStream // and the passed key and initialization vector (IV). CryptoStream csDecrypt = new CryptoStream(msDecrypt, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), CryptoStreamMode.Read); // Create buffer to hold the decrypted data. byte[] fromEncrypt = new byte[Data.Length]; // Read the decrypted data out of the crypto stream // and place it into the temporary buffer. csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length); //Convert the buffer into a string and return it. return new ASCIIEncoding().GetString(fromEncrypt); } catch(CryptographicException e) { Console.WriteLine("A Cryptographic error occurred: {0}", e.Message); return null; } } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
