TripleDES.Create Method ()

 
System_CAPS_noteNote

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

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
Available since 1.1
Return to top
Show: