TripleDES.Create Method

Creates an instance of a cryptographic object to perform the TripleDES algorithm.

Namespace:  System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

public static TripleDES Create()

Return Value

Type: System.Security.Cryptography.TripleDES
An instance of a cryptographic object.

Creates a new instance of the TripleDES class.

The following code example shows how to create and use a TripleDES object to encrypt and decrypt data in a file.

using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;

class TripleDESSample
{

    static void Main()
    {
        try
        {
            // Create a new TripleDES object to generate a key 
            // and an initialization vector (IV). 
            using (TripleDES TripleDESalg = TripleDES.Create())
            {
                // Create a string to encrypt. 
                string sData = "Here is some data to encrypt.";
                string FileName = "CText.enc";

                // Encrypt text to a file using the file name, key, and IV.
                EncryptTextToFile(sData, FileName, TripleDESalg.Key, TripleDESalg.IV);

                // Decrypt the text from a file using the file name, key, and IV. 
                string Final = DecryptTextFromFile(FileName, TripleDESalg.Key, TripleDESalg.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. 
            using (FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate))
            {

                // Create a new TripleDES object. 
                using (TripleDES tripleDESalg = TripleDES.Create())
                {

                    // Create a CryptoStream using the FileStream  
                    // and the passed key and initialization vector (IV). 
                    using (CryptoStream cStream = new CryptoStream(fStream,
                        tripleDESalg.CreateEncryptor(Key, IV),
                        CryptoStreamMode.Write))
                    {

                        // Create a StreamWriter using the CryptoStream. 
                        using (StreamWriter sWriter = new StreamWriter(cStream))
                        {

                            // Write the data to the stream  
                            // to encrypt it.
                            sWriter.WriteLine(Data);
                        }
                    }
                }
            }

        }
        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
        {
            string retVal = "";
            // Create or open the specified file.  
            using (FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate))
            {

                // Create a new TripleDES object. 
                using (TripleDES tripleDESalg = TripleDES.Create())
                {

                    // Create a CryptoStream using the FileStream  
                    // and the passed key and initialization vector (IV). 
                    using (CryptoStream cStream = new CryptoStream(fStream,
                        tripleDESalg.CreateDecryptor(Key, IV),
                        CryptoStreamMode.Read))
                    {

                        // Create a StreamReader using the CryptoStream. 
                        using (StreamReader sReader = new StreamReader(cStream))
                        {

                            // Read the data from the stream  
                            // to decrypt it.
                            retVal = sReader.ReadLine();
                        }
                    }
                }

            }
            // Return the string.  
            return retVal;
        }
        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 shows how to create and use a TripleDES object to encrypt and decrypt data in memory.

#using <System.dll>

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 new TripleDES object.
      TripleDES^ tripleDESalg = TripleDES::Create();

      // Create a CryptoStream using the MemoryStream  
      // and the passed key and initialization vector (IV).
      CryptoStream^ cStream = gcnew CryptoStream( mStream,tripleDESalg->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 new TripleDES object.
      TripleDES^ tripleDESalg = TripleDES::Create();

      // Create a CryptoStream using the MemoryStream  
      // and the passed key and initialization vector (IV).
      CryptoStream^ csDecrypt = gcnew CryptoStream( msDecrypt,tripleDESalg->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 TripleDES object to generate a key 
      // and initialization vector (IV).
      TripleDES^ TripleDESalg = TripleDES::Create();

      // 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, TripleDESalg->Key, TripleDESalg->IV );

      // Decrypt the buffer back to a string.
      String^ Final = DecryptTextFromMemory( Data, TripleDESalg->Key, TripleDESalg->IV );

      // Display the decrypted string to the console.
      Console::WriteLine( Final );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft