TripleDESCryptoServiceProvider Class
Defines a wrapper object to access the cryptographic service provider (CSP) version of the TripleDES algorithm. This class cannot be inherited.
Assembly: mscorlib (in mscorlib.dll)
System.Security.Cryptography::SymmetricAlgorithm
System.Security.Cryptography::TripleDES
System.Security.Cryptography::TripleDESCryptoServiceProvider
| 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 | |
![]() | 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(array<Byte>^, array<Byte>^) | Creates a symmetric TripleDES decryptor object with the specified key (Key) and initialization vector (IV).(Overrides SymmetricAlgorithm::CreateDecryptor(array<Byte>^, array<Byte>^).) |
![]() | CreateEncryptor() | Creates a symmetric encryptor object with the current Key property and initialization vector (IV).(Inherited from SymmetricAlgorithm.) |
![]() | CreateEncryptor(array<Byte>^, array<Byte>^) | Creates a symmetric TripleDES encryptor object with the specified key (Key) and initialization vector (IV).(Overrides SymmetricAlgorithm::CreateEncryptor(array<Byte>^, array<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 the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
![]() | ValidKeySize(Int32) | 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 namespace System; using namespace System::Security::Cryptography; using namespace System::Text; using namespace System::IO; void EncryptTextToFile( String^ Data, String^ FileName, array<Byte>^Key, array<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 = gcnew CryptoStream( fStream,(gcnew TripleDESCryptoServiceProvider)->CreateEncryptor( Key, IV ),CryptoStreamMode::Write ); // Create a StreamWriter using the CryptoStream. StreamWriter^ sWriter = gcnew 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 ); } } String^ DecryptTextFromFile( String^ FileName, array<Byte>^Key, array<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 = gcnew CryptoStream( fStream,(gcnew TripleDESCryptoServiceProvider)->CreateDecryptor( Key, IV ),CryptoStreamMode::Read ); // Create a StreamReader using the CryptoStream. StreamReader^ sReader = gcnew 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 nullptr; } catch ( UnauthorizedAccessException^ e ) { Console::WriteLine( "A file access error occurred: {0}", e->Message ); return nullptr; } } int main() { try { // Create a new TripleDESCryptoServiceProvider object // to generate a key and initialization vector (IV). TripleDESCryptoServiceProvider^ tDESalg = gcnew 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 ); } }
The following code example creates a TripleDESCryptoServiceProvider object and uses it to encrypt and decrypt data in memory.
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; using namespace System::IO; array<Byte>^ EncryptTextToMemory( String^ Data, array<Byte>^Key, array<Byte>^IV ) { try { // Create a MemoryStream. MemoryStream^ mStream = gcnew MemoryStream; // Create a CryptoStream using the MemoryStream // and the passed key and initialization vector (IV). CryptoStream^ cStream = gcnew CryptoStream( mStream,(gcnew TripleDESCryptoServiceProvider)->CreateEncryptor( Key, IV ),CryptoStreamMode::Write ); // Convert the passed string to a byte array. array<Byte>^toEncrypt = (gcnew 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. array<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 nullptr; } } String^ DecryptTextFromMemory( array<Byte>^Data, array<Byte>^Key, array<Byte>^IV ) { try { // Create a new MemoryStream using the passed // array of encrypted data. MemoryStream^ msDecrypt = gcnew MemoryStream( Data ); // Create a CryptoStream using the MemoryStream // and the passed key and initialization vector (IV). CryptoStream^ csDecrypt = gcnew CryptoStream( msDecrypt,(gcnew TripleDESCryptoServiceProvider)->CreateDecryptor( Key, IV ),CryptoStreamMode::Read ); // Create buffer to hold the decrypted data. array<Byte>^fromEncrypt = gcnew array<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 (gcnew ASCIIEncoding)->GetString( fromEncrypt ); } catch ( CryptographicException^ e ) { Console::WriteLine( "A Cryptographic error occurred: {0}", e->Message ); return nullptr; } } int main() { try { // Create a new TripleDESCryptoServiceProvider object // to generate a key and initialization vector (IV). TripleDESCryptoServiceProvider^ tDESalg = gcnew TripleDESCryptoServiceProvider; // Create a string to encrypt. String^ sData = "Here is some data to encrypt."; // Encrypt the string to an in-memory buffer. array<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 ); } }
Available since 1.1
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


