System.Security.Cryptograph ...


.NET Framework Class Library
DESCryptoServiceProvider Class

Updated: February 2009

Defines a wrapper object to access the cryptographic service provider (CSP) version of the Data Encryption Standard (DES) algorithm. This class cannot be inherited.

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

Visual Basic (Declaration)
<ComVisibleAttribute(True)> _
Public NotInheritable Class DESCryptoServiceProvider _
    Inherits DES
Visual Basic (Usage)
Dim instance As DESCryptoServiceProvider
C#
[ComVisibleAttribute(true)]
public sealed class DESCryptoServiceProvider : DES
Visual C++
[ComVisibleAttribute(true)]
public ref class DESCryptoServiceProvider sealed : public DES
JScript
public final class DESCryptoServiceProvider extends DES
Remarks

This algorithm supports a key length of 64 bits.

NoteNote:

A newer symmetric encryption algorithm, Advanced Encryption Standard (AES), is available. Consider using the AesCryptoServiceProvider class instead of the DESCryptoServiceProvider class.

Examples

The following example uses the DESCryptoServiceProvider class to encrypt some data to memory and then decrypt the data.

Visual Basic
' This sample demonstrates using a key based on the cryptographic service provider (CSP) version
' of the Data Encryption Standard (DES)algorithm to encrypt a string to a byte array, and then 
' to decrypt the byte array back to a string.
Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography



Class CryptoMemoryStream

    ' Main method.
    Public Shared Sub Main()
        ' Create a new DES key.
        Dim key As New DESCryptoServiceProvider()

        ' Encrypt a string to a byte array.
        Dim buffer As Byte() = Encrypt("This is some plaintext!", key)

        ' Decrypt the byte array back to a string.
        Dim plaintext As String = Decrypt(buffer, key)

        ' Display the plaintext value to the console.
        Console.WriteLine(plaintext)
    End Sub 'Main


    ' Encrypt the string.
    Public Shared Function Encrypt(PlainText As String, key As SymmetricAlgorithm) As Byte()
        ' Create a memory stream.
        Dim ms As New MemoryStream()

        ' Create a CryptoStream using the memory stream and the 
        ' CSP DES key.  
        Dim encStream As New CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write)

        ' Create a StreamWriter to write a string
        ' to the stream.
        Dim sw As New StreamWriter(encStream)

        ' Write the plaintext to the stream.
        sw.WriteLine(PlainText)

        ' Close the StreamWriter and CryptoStream.
        sw.Close()
        encStream.Close()

        ' Get an array of bytes that represents
        ' the memory stream.
        Dim buffer As Byte() = ms.ToArray()

        ' Close the memory stream.
        ms.Close()

        ' Return the encrypted byte array.
        Return buffer
    End Function 'Encrypt


    ' Decrypt the byte array.
    Public Shared Function Decrypt(CypherText() As Byte, key As SymmetricAlgorithm) As String
        ' Create a memory stream to the passed buffer.
        Dim ms As New MemoryStream(CypherText)

        ' Create a CryptoStream using the memory stream and the 
        ' CSP DES key. 
        Dim encStream As New CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read)

        ' Create a StreamReader for reading the stream.
        Dim sr As New StreamReader(encStream)

        ' Read the stream as a string.
        Dim val As String = sr.ReadLine()

        ' Close the streams.
        sr.Close()
        encStream.Close()
        ms.Close()

        Return val
    End Function 'Decrypt
End Class 'CryptoMemoryStream
C#
// This sample demonstrates using a key based on the cryptographic service provider (CSP) version
// of the Data Encryption Standard (DES)algorithm to encrypt a string to a byte array, and then 
// to decrypt the byte array back to a string.

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

class CryptoMemoryStream
{
    // Main method.
    public static void Main()
    {
        // Create a new DES key.
        DESCryptoServiceProvider key = new DESCryptoServiceProvider();

        // Encrypt a string to a byte array.
        byte[] buffer = Encrypt("This is some plaintext!", key);

        // Decrypt the byte array back to a string.
        string plaintext =  Decrypt(buffer, key);

        // Display the plaintext value to the console.
        Console.WriteLine(plaintext);
    }

    // Encrypt the string.
    public static byte[] Encrypt(string PlainText, SymmetricAlgorithm key)
    {
        // Create a memory stream.
        MemoryStream ms = new MemoryStream();

        // Create a CryptoStream using the memory stream and the 
        // CSP DES key.  
        CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);

        // Create a StreamWriter to write a string
        // to the stream.
        StreamWriter sw = new StreamWriter(encStream);

        // Write the plaintext to the stream.
        sw.WriteLine(PlainText);

        // Close the StreamWriter and CryptoStream.
        sw.Close();
        encStream.Close();

        // Get an array of bytes that represents
        // the memory stream.
        byte[] buffer = ms.ToArray();

        // Close the memory stream.
        ms.Close();

        // Return the encrypted byte array.
        return buffer;
    }

   // Decrypt the byte array.
    public static string Decrypt(byte[] CypherText, SymmetricAlgorithm key)
    {
        // Create a memory stream to the passed buffer.
        MemoryStream ms = new MemoryStream(CypherText);

        // Create a CryptoStream using the memory stream and the 
        // CSP DES key. 
        CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);

        // Create a StreamReader for reading the stream.
        StreamReader sr = new StreamReader(encStream);

        // Read the stream as a string.
        string val = sr.ReadLine();

        // Close the streams.
        sr.Close();
        encStream.Close();
        ms.Close();

        return val;
    }
}
Visual C++
// This sample demonstrates using a key based on the cryptographic service provider (CSP) version
// of the Data Encryption Standard (DES)algorithm to encrypt a string to a byte array, and then 
// to decrypt the byte array back to a string.
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Security::Cryptography;

// Encrypt the string.
array<Byte>^ Encrypt( String^ PlainText, SymmetricAlgorithm^ key )
{

   // Create a memory stream.
   MemoryStream^ ms = gcnew MemoryStream;

   // Create a CryptoStream using the memory stream and the 
   // CSP DES key.  
   CryptoStream^ encStream = gcnew CryptoStream( ms,key->CreateEncryptor(),CryptoStreamMode::Write );

   // Create a StreamWriter to write a string
   // to the stream.
   StreamWriter^ sw = gcnew StreamWriter( encStream );

   // Write the plaintext to the stream.
   sw->WriteLine( PlainText );

   // Close the StreamWriter and CryptoStream.
   sw->Close();
   encStream->Close();

   // Get an array of bytes that represents
   // the memory stream.
   array<Byte>^buffer = ms->ToArray();

   // Close the memory stream.
   ms->Close();

   // Return the encrypted byte array.
   return buffer;
}


// Decrypt the byte array.
String^ Decrypt( array<Byte>^CypherText, SymmetricAlgorithm^ key )
{

   // Create a memory stream to the passed buffer.
   MemoryStream^ ms = gcnew MemoryStream( CypherText );

   // Create a CryptoStream using the memory stream and the 
   // CSP DES key. 
   CryptoStream^ encStream = gcnew CryptoStream( ms,key->CreateDecryptor(),CryptoStreamMode::Read );

   // Create a StreamReader for reading the stream.
   StreamReader^ sr = gcnew StreamReader( encStream );

   // Read the stream as a string.
   String^ val = sr->ReadLine();

   // Close the streams.
   sr->Close();
   encStream->Close();
   ms->Close();
   return val;
}

int main()
{

   // Create a new DES key.
   DESCryptoServiceProvider^ key = gcnew DESCryptoServiceProvider;

   // Encrypt a string to a byte array.
   array<Byte>^buffer = Encrypt( "This is some plaintext!", key );

   // Decrypt the byte array back to a string.
   String^ plaintext = Decrypt( buffer, key );

   // Display the plaintext value to the console.
   Console::WriteLine( plaintext );
}

Inheritance Hierarchy

System..::.Object
  System.Security.Cryptography..::.SymmetricAlgorithm
    System.Security.Cryptography..::.DES
      System.Security.Cryptography..::.DESCryptoServiceProvider
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0
See Also

Reference

Other Resources

Change History

Date

History

Reason

February 2009

Added note about newer AES algorithm.

Information enhancement.

Tags :


Page view tracker