DES.Create Method
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Creates an instance of a cryptographic object to perform the Data Encryption Standard (DES) algorithm.
Create() |
Creates an instance of a cryptographic object to perform the Data Encryption Standard (DES) algorithm. |
Create(String) |
Obsolete.
Creates an instance of a cryptographic object to perform the specified implementation of the Data Encryption Standard (DES) algorithm. |
- Source:
- DES.cs
- Source:
- DES.cs
- Source:
- DES.cs
Creates an instance of a cryptographic object to perform the Data Encryption Standard (DES) algorithm.
public:
static System::Security::Cryptography::DES ^ Create();
public static System.Security.Cryptography.DES Create ();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Security.Cryptography.DES Create ();
static member Create : unit -> System.Security.Cryptography.DES
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Create : unit -> System.Security.Cryptography.DES
Public Shared Function Create () As DES
Returns
A cryptographic object.
- Attributes
Examples
The following code example shows how to create and use a DES object to encrypt and decrypt data in a file.
using namespace System;
using namespace System::IO;
using namespace System::Security::Cryptography;
using namespace System::Text;
void EncryptTextToFile(String^ text, String^ path, array<Byte>^ key, array<Byte>^ iv);
String^ DecryptTextFromFile(String^ path, array<Byte>^ key, array<Byte>^ iv);
int main()
{
try
{
array<Byte>^ key;
array<Byte>^ iv;
// Create a new DES object to generate a random key
// and initialization vector (IV).
{
DES^ des;
try
{
des = DES::Create();
key = des->Key;
iv = des->IV;
}
finally
{
delete des;
}
}
// Create a string to encrypt.
String^ original = "Here is some data to encrypt.";
// The name/path of the file to write.
String^ filename = "CText.enc";
// Encrypt the string to a file.
EncryptTextToFile(original, filename, key, iv);
// Decrypt the file back to a string.
String^ decrypted = DecryptTextFromFile(filename, key, iv);
// Display the decrypted string to the console.
Console::WriteLine(decrypted);
}
catch (Exception^ e)
{
Console::WriteLine(e->Message);
}
}
void EncryptTextToFile(String^ text, String^ path, array<Byte>^ key, array<Byte>^ iv)
{
FileStream^ fStream = nullptr;
DES^ des = nullptr;
ICryptoTransform^ encryptor = nullptr;
CryptoStream^ cStream = nullptr;
try
{
// Create or open the specified file.
fStream = File::Open(path, FileMode::Create);
// Create a new DES object.
des = DES::Create();
// Create a DES encryptor from the key and IV
encryptor = des->CreateEncryptor(key, iv);
// Create a CryptoStream using the FileStream and encryptor
cStream = gcnew CryptoStream(fStream, encryptor, CryptoStreamMode::Write);
// Convert the provided string to a byte array.
array<Byte>^ toEncrypt = Encoding::UTF8->GetBytes(text);
// Write the byte array to the crypto stream.
cStream->Write(toEncrypt, 0, toEncrypt->Length);
}
catch (CryptographicException^ e)
{
Console::WriteLine("A Cryptographic error occurred: {0}", e->Message);
throw;
}
finally
{
if (cStream != nullptr)
delete cStream;
if (encryptor != nullptr)
delete encryptor;
if (des != nullptr)
delete des;
if (fStream != nullptr)
delete fStream;
}
}
String^ DecryptTextFromFile(String^ path, array<Byte>^ key, array<Byte>^ iv)
{
FileStream^ fStream = nullptr;
DES^ des = nullptr;
ICryptoTransform^ decryptor = nullptr;
CryptoStream^ cStream = nullptr;
StreamReader^ reader = nullptr;
try
{
// Open the specified file
fStream = File::OpenRead(path);
// Create a new DES object.
des = DES::Create();
// Create a DES decryptor from the key and IV
decryptor = des->CreateDecryptor(key, iv);
// Create a CryptoStream using the FileStream and decryptor
cStream = gcnew CryptoStream(fStream, decryptor, CryptoStreamMode::Read);
// Create a StreamReader to turn the bytes back into text
reader = gcnew StreamReader(cStream, Encoding::UTF8);
// Read back all of the text from the StreamReader, which receives
// the decrypted bytes from the CryptoStream, which receives the
// encrypted bytes from the FileStream.
return reader->ReadToEnd();
}
catch (CryptographicException^ e)
{
Console::WriteLine("A Cryptographic error occurred: {0}", e->Message);
throw;
}
finally
{
if (cStream != nullptr)
delete cStream;
if (decryptor != nullptr)
delete decryptor;
if (des != nullptr)
delete des;
if (fStream != nullptr)
delete fStream;
}
}
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class DESSample
{
static void Main()
{
try
{
byte[] key;
byte[] iv;
// Create a new DES object to generate a random key
// and initialization vector (IV).
using (DES des = DES.Create())
{
key = des.Key;
iv = des.IV;
}
// Create a string to encrypt.
string original = "Here is some data to encrypt.";
// The name/path of the file to write.
string filename = "CText.enc";
// Encrypt the string to a file.
EncryptTextToFile(original, filename, key, iv);
// Decrypt the file back to a string.
string decrypted = DecryptTextFromFile(filename, key, iv);
// Display the decrypted string to the console.
Console.WriteLine(decrypted);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static void EncryptTextToFile(string text, string path, byte[] key, byte[] iv)
{
try
{
// Create or open the specified file.
using (FileStream fStream = File.Open(path, FileMode.Create))
// Create a new DES object.
using (DES des = DES.Create())
// Create a DES encryptor from the key and IV
using (ICryptoTransform encryptor = des.CreateEncryptor(key, iv))
// Create a CryptoStream using the FileStream and encryptor
using (var cStream = new CryptoStream(fStream, encryptor, CryptoStreamMode.Write))
{
// Convert the provided string to a byte array.
byte[] toEncrypt = Encoding.UTF8.GetBytes(text);
// Write the byte array to the crypto stream.
cStream.Write(toEncrypt, 0, toEncrypt.Length);
}
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
throw;
}
}
public static string DecryptTextFromFile(string path, byte[] key, byte[] iv)
{
try
{
// Open the specified file
using (FileStream fStream = File.OpenRead(path))
// Create a new DES object.
using (DES des = DES.Create())
// Create a DES decryptor from the key and IV
using (ICryptoTransform decryptor = des.CreateDecryptor(key, iv))
// Create a CryptoStream using the FileStream and decryptor
using (var cStream = new CryptoStream(fStream, decryptor, CryptoStreamMode.Read))
// Create a StreamReader to turn the bytes back into text
using (StreamReader reader = new StreamReader(cStream, Encoding.UTF8))
{
// Read back all of the text from the StreamReader, which receives
// the decrypted bytes from the CryptoStream, which receives the
// encrypted bytes from the FileStream.
return reader.ReadToEnd();
}
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
throw;
}
}
}
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Module DESSample
Sub Main()
Try
Dim key As Byte()
Dim iv As Byte()
' Create a new DES object to generate a key
' and initialization vector (IV).
Using des As DES = DES.Create
key = des.Key
iv = des.IV
End Using
' Create a string to encrypt.
Dim original As String = "Here is some data to encrypt."
' The name/path of the file to write.
Dim filename As String = "CText.enc"
' Encrypt the string to a file.
EncryptTextToFile(original, filename, key, iv)
' Decrypt the file back to a string.
Dim decrypted As String = DecryptTextFromFile(filename, key, iv)
' Display the decrypted string to the console.
Console.WriteLine(decrypted)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Sub EncryptTextToFile(text As String, path As String, key As Byte(), iv As Byte())
Try
' Create or open the specified file.
' Create a new DES object,
' Create a DES encryptor from the key and IV,
' Create a CryptoStream using the MemoryStream And encryptor
Using fStream As FileStream = File.Open(path, FileMode.Create),
des As DES = DES.Create,
encryptor As ICryptoTransform = des.CreateEncryptor(key, iv),
cStream = New CryptoStream(fStream, encryptor, CryptoStreamMode.Write)
' Convert the passed string to a byte array.
Dim toEncrypt As Byte() = Encoding.UTF8.GetBytes(text)
' Write the byte array to the crypto stream.
cStream.Write(toEncrypt, 0, toEncrypt.Length)
End Using
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Throw
End Try
End Sub
Function DecryptTextFromFile(path As String, key As Byte(), iv As Byte()) As String
Try
' Open the specified file
' Create a new DES object.
' Create a DES decryptor from the key and IV
' Create a CryptoStream using the MemoryStream and decryptor
' Create a StreamReader to turn the bytes back into text
Using mStream As FileStream = File.OpenRead(path),
des As DES = DES.Create,
decryptor As ICryptoTransform = des.CreateDecryptor(key, iv),
cStream = New CryptoStream(mStream, decryptor, CryptoStreamMode.Read),
reader = New StreamReader(cStream, Encoding.UTF8)
' Read back all of the text from the StreamReader, which receives
' the decrypted bytes from the CryptoStream, which receives the
' encrypted bytes from the FileStream.
Return reader.ReadToEnd()
End Using
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module
The following code example shows how to create and use a DES object 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^ text, array<Byte>^ key, array<Byte>^ iv);
String^ DecryptTextFromMemory(array<Byte>^ encrypted, array<Byte>^ key, array<Byte>^ iv);
int main()
{
try
{
array<Byte>^ key;
array<Byte>^ iv;
// Create a new DES object to generate a random key
// and initialization vector (IV).
{
DES^ des;
try
{
des = DES::Create();
key = des->Key;
iv = des->IV;
}
finally
{
delete des;
}
}
// Create a string to encrypt.
String^ original = "Here is some data to encrypt.";
// Encrypt the string to an in-memory buffer.
array<Byte>^ encrypted = EncryptTextToMemory(original, key, iv);
// Decrypt the buffer back to a string.
String^ decrypted = DecryptTextFromMemory(encrypted, key, iv);
// Display the decrypted string to the console.
Console::WriteLine(decrypted);
}
catch (Exception^ e)
{
Console::WriteLine(e->Message);
}
}
array<Byte>^ EncryptTextToMemory(String^ text, array<Byte>^ key, array<Byte>^ iv)
{
MemoryStream^ mStream = nullptr;
try
{
// Create a MemoryStream.
mStream = gcnew MemoryStream;
DES^ des = nullptr;
ICryptoTransform^ encryptor = nullptr;
CryptoStream^ cStream = nullptr;
try
{
// Create a new DES object.
des = DES::Create();
// Create a DES encryptor from the key and IV
encryptor = des->CreateEncryptor(key, iv);
// Create a CryptoStream using the MemoryStream and encryptor
cStream = gcnew CryptoStream(mStream, encryptor, CryptoStreamMode::Write);
// Convert the provided string to a byte array.
array<Byte>^ toEncrypt = Encoding::UTF8->GetBytes(text);
// Write the byte array to the crypto stream.
cStream->Write(toEncrypt, 0, toEncrypt->Length);
// Disposing the CryptoStream completes the encryption and flushes the stream.
delete cStream;
// Get an array of bytes from the MemoryStream that holds the encrypted data.
array<Byte>^ ret = mStream->ToArray();
// Return the encrypted buffer.
return ret;
}
finally
{
if (cStream != nullptr)
delete cStream;
if (encryptor != nullptr)
delete encryptor;
if (des != nullptr)
delete des;
}
}
catch (CryptographicException^ e)
{
Console::WriteLine("A Cryptographic error occurred: {0}", e->Message);
throw;
}
finally
{
if (mStream != nullptr)
delete mStream;
}
}
String^ DecryptTextFromMemory(array<Byte>^ encrypted, array<Byte>^ key, array<Byte>^ iv)
{
MemoryStream^ mStream = nullptr;
DES^ des = nullptr;
ICryptoTransform^ decryptor = nullptr;
CryptoStream^ cStream = nullptr;
try
{
// Create buffer to hold the decrypted data.
// DES-encrypted data will always be slightly bigger than the decrypted data.
array<Byte>^ decrypted = gcnew array<Byte>(encrypted->Length);
Int32 offset = 0;
// Create a new MemoryStream using the provided array of encrypted data.
mStream = gcnew MemoryStream(encrypted);
// Create a new DES object.
des = DES::Create();
// Create a DES decryptor from the key and IV
decryptor = des->CreateDecryptor(key, iv);
// Create a CryptoStream using the MemoryStream and decryptor
cStream = gcnew CryptoStream(mStream, decryptor, CryptoStreamMode::Read);
// Keep reading from the CryptoStream until it finishes (returns 0).
Int32 read = 1;
while (read > 0)
{
read = cStream->Read(decrypted, offset, decrypted->Length - offset);
offset += read;
}
// Convert the buffer into a string and return it.
return Encoding::UTF8->GetString(decrypted, 0, offset);
}
catch (CryptographicException^ e)
{
Console::WriteLine("A Cryptographic error occurred: {0}", e->Message);
throw;
}
finally
{
if (cStream != nullptr)
delete cStream;
if (decryptor != nullptr)
delete decryptor;
if (des != nullptr)
delete des;
if (mStream != nullptr)
delete mStream;
}
}
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
class DESSample2
{
static void Main()
{
try
{
byte[] key;
byte[] iv;
// Create a new DES object to generate a random key
// and initialization vector (IV).
using (DES des = DES.Create())
{
key = des.Key;
iv = des.IV;
}
// Create a string to encrypt.
string original = "Here is some data to encrypt.";
// Encrypt the string to an in-memory buffer.
byte[] encrypted = EncryptTextToMemory(original, key, iv);
// Decrypt the buffer back to a string.
string decrypted = DecryptTextFromMemory(encrypted, key, iv);
// Display the decrypted string to the console.
Console.WriteLine(decrypted);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static byte[] EncryptTextToMemory(string text, byte[] key, byte[] iv)
{
try
{
// Create a MemoryStream.
using (MemoryStream mStream = new MemoryStream())
{
// Create a new DES object.
using (DES des = DES.Create())
// Create a DES encryptor from the key and IV
using (ICryptoTransform encryptor = des.CreateEncryptor(key, iv))
// Create a CryptoStream using the MemoryStream and encryptor
using (var cStream = new CryptoStream(mStream, encryptor, CryptoStreamMode.Write))
{
// Convert the provided string to a byte array.
byte[] toEncrypt = Encoding.UTF8.GetBytes(text);
// Write the byte array to the crypto stream and flush it.
cStream.Write(toEncrypt, 0, toEncrypt.Length);
// Ending the using statement for the CryptoStream completes the encryption.
}
// Get an array of bytes from the MemoryStream that holds the encrypted data.
byte[] ret = mStream.ToArray();
// Return the encrypted buffer.
return ret;
}
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
throw;
}
}
public static string DecryptTextFromMemory(byte[] encrypted, byte[] key, byte[] iv)
{
try
{
// Create a buffer to hold the decrypted data.
// DES-encrypted data will always be slightly bigger than the decrypted data.
byte[] decrypted = new byte[encrypted.Length];
int offset = 0;
// Create a new MemoryStream using the provided array of encrypted data.
using (MemoryStream mStream = new MemoryStream(encrypted))
{
// Create a new DES object.
using (DES des = DES.Create())
// Create a DES decryptor from the key and IV
using (ICryptoTransform decryptor = des.CreateDecryptor(key, iv))
// Create a CryptoStream using the MemoryStream and decryptor
using (var cStream = new CryptoStream(mStream, decryptor, CryptoStreamMode.Read))
{
// Keep reading from the CryptoStream until it finishes (returns 0).
int read = 1;
while (read > 0)
{
read = cStream.Read(decrypted, offset, decrypted.Length - offset);
offset += read;
}
}
}
// Convert the buffer into a string and return it.
return Encoding.UTF8.GetString(decrypted, 0, offset);
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
throw;
}
}
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Module DESSample
Sub Main()
Try
Dim key As Byte()
Dim iv As Byte()
' Create a new DES object to generate a key
' and initialization vector (IV).
Using des As DES = DES.Create
key = des.Key
iv = des.IV
End Using
' Create a string to encrypt.
Dim original As String = "Here is some data to encrypt."
' Encrypt the string to an in-memory buffer.
Dim encrypted As Byte() = EncryptTextToMemory(original, key, iv)
' Decrypt the buffer back to a string.
Dim decrypted As String = DecryptTextFromMemory(encrypted, key, iv)
' Display the decrypted string to the console.
Console.WriteLine(decrypted)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Function EncryptTextToMemory(text As String, key As Byte(), iv As Byte()) As Byte()
Try
' Create a MemoryStream.
Using mStream As New MemoryStream
' Create a new DES object,
' Create a DES encryptor from the key and IV,
' Create a CryptoStream using the MemoryStream And encryptor
Using des As DES = DES.Create,
encryptor As ICryptoTransform = des.CreateEncryptor(key, iv),
cStream = New CryptoStream(mStream, encryptor, CryptoStreamMode.Write)
' Convert the passed string to a byte array.
Dim toEncrypt As Byte() = Encoding.UTF8.GetBytes(text)
' Write the byte array to the crypto stream and flush it.
cStream.Write(toEncrypt, 0, toEncrypt.Length)
' Ending the using block for the CryptoStream completes the encryption.
End Using
' Get an array of bytes from the MemoryStream that holds the encrypted data.
Dim ret As Byte() = mStream.ToArray()
' Return the encrypted buffer.
Return ret
End Using
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Throw
End Try
End Function
Function DecryptTextFromMemory(encrypted As Byte(), key As Byte(), iv As Byte()) As String
Try
' Create a buffer to hold the decrypted data.
' DES-encrypted data will always be slightly bigger than the decrypted data.
Dim decrypted(encrypted.Length - 1) As Byte
Dim offset As Integer = 0
' Create a new MemoryStream using the provided array of encrypted data.
' Create a new DES object.
' Create a DES decryptor from the key and IV
' Create a CryptoStream using the MemoryStream and decryptor
Using mStream As New MemoryStream(encrypted),
des As DES = DES.Create,
decryptor As ICryptoTransform = des.CreateDecryptor(key, iv),
cStream = New CryptoStream(mStream, decryptor, CryptoStreamMode.Read)
' Keep reading from the CryptoStream until it finishes (returns 0).
Dim read As Integer = 1
While (read > 0)
read = cStream.Read(decrypted, offset, decrypted.Length - offset)
offset += read
End While
End Using
' Convert the buffer into a string and return it.
Return New ASCIIEncoding().GetString(decrypted, 0, offset)
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module
Remarks
Creates an instance of the DES object that can be used for encrypting and decrypting data.
See also
Applies to
.NET 9 والإصدارات الأخرى
منتج | الإصدارات |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
- Source:
- DES.cs
- Source:
- DES.cs
- Source:
- DES.cs
Caution
Cryptographic factory methods accepting an algorithm name are obsolete. Use the parameterless Create factory method on the algorithm type instead.
Creates an instance of a cryptographic object to perform the specified implementation of the Data Encryption Standard (DES) algorithm.
public:
static System::Security::Cryptography::DES ^ Create(System::String ^ algName);
public static System.Security.Cryptography.DES? Create (string algName);
[System.Obsolete("Cryptographic factory methods accepting an algorithm name are obsolete. Use the parameterless Create factory method on the algorithm type instead.", DiagnosticId="SYSLIB0045", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.DES? Create (string algName);
public static System.Security.Cryptography.DES Create (string algName);
static member Create : string -> System.Security.Cryptography.DES
[<System.Obsolete("Cryptographic factory methods accepting an algorithm name are obsolete. Use the parameterless Create factory method on the algorithm type instead.", DiagnosticId="SYSLIB0045", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member Create : string -> System.Security.Cryptography.DES
Public Shared Function Create (algName As String) As DES
Parameters
Returns
A cryptographic object.
- Attributes
See also
Applies to
.NET 9 والإصدارات الأخرى
منتج | الإصدارات (قديم) |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6 (7, 8, 9) |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
ملاحظات .NET
.NET هو مشروع مصدر مفتوح. حدد رابطًا لتقديم الملاحظات: