TripleDES.Create Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria uma instância de um objeto criptográfico para executar o algoritmo TripleDES.
Sobrecargas
Create() |
Cria uma instância de um objeto criptográfico para executar o algoritmo TripleDES. |
Create(String) |
Cria uma instância de um objeto criptográfico para realizar a implementação especificada do algoritmo TripleDES. |
Create()
Cria uma instância de um objeto criptográfico para executar o algoritmo TripleDES.
public:
static System::Security::Cryptography::TripleDES ^ Create();
public static System.Security.Cryptography.TripleDES Create ();
static member Create : unit -> System.Security.Cryptography.TripleDES
Public Shared Function Create () As TripleDES
Retornos
Uma instância de um objeto de criptografia.
Exemplos
O exemplo de código a seguir mostra como criar e usar um TripleDES objeto para criptografar e descriptografar dados em um arquivo.
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 new TripleDES object.
TripleDES^ tripleDESalg = TripleDES::Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream^ cStream = gcnew CryptoStream( fStream,tripleDESalg->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 new TripleDES object.
TripleDES^ tripleDESalg = TripleDES::Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream^ cStream = gcnew CryptoStream( fStream,tripleDESalg->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 TripleDES object to generate a key
// and an initialization vector (IV).
TripleDES^ TripleDESalg = TripleDES::Create();
// 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, 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 );
}
}
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;
}
}
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Module TripleDESSample
Sub Main()
Try
' Create a new TripleDES object to generate a key
' and initialization vector (IV).
Using TripleDESalg As TripleDES = TripleDES.Create
' Create a string to encrypt.
Dim sData As String = "Here is some data to encrypt."
Dim FileName As String = "CText.txt"
' 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.
Dim Final As String = DecryptTextFromFile(FileName, TripleDESalg.Key, TripleDESalg.IV)
' Display the decrypted string to the console.
Console.WriteLine(Final)
End Using
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Sub EncryptTextToFile(ByVal Data As String, ByVal FileName As String,
ByVal Key() As Byte, ByVal IV() As Byte)
Try
' Create or open the specified file.
Using fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)
' Create a new TripleDES object.
Using TripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the FileStream
' and the passed key and initialization vector (IV).
Using cStream As New CryptoStream(fStream, _
TripleDESalg.CreateEncryptor(Key, IV), _
CryptoStreamMode.Write)
' Create a StreamWriter using the CryptoStream.
Using sWriter As New StreamWriter(cStream)
' Write the data to the stream
' to encrypt it.
sWriter.WriteLine(Data)
End Using
End Using
End Using
End Using
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Catch e As UnauthorizedAccessException
Console.WriteLine("A file access error occurred: {0}", e.Message)
End Try
End Sub
Function DecryptTextFromFile(ByVal FileName As String, ByVal Key() As Byte, ByVal IV() As Byte) As String
Try
Dim retVal As String
' Create or open the specified file.
Using fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)
' Create a new TripleDES object.
Using TripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the FileStream
' and the passed key and initialization vector (IV).
Using cStream As New CryptoStream(fStream, _
TripleDESalg.CreateDecryptor(Key, IV), CryptoStreamMode.Read)
' Create a StreamReader using the CryptoStream.
Using sReader As New StreamReader(cStream)
' Read the data from the stream
' to decrypt it.
retVal = sReader.ReadLine()
End Using
End Using
End Using
End Using
Return retVal
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
Catch e As UnauthorizedAccessException
Console.WriteLine("A file access error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module
O exemplo de código a seguir mostra como criar e usar um TripleDES objeto para criptografar e descriptografar dados na memória.
#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 );
}
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Module TripleDESPSample
Sub Main()
Try
' Create a new TripleDES object to generate a key
' and initialization vector (IV).
Using TripleDESalg As TripleDES = TripleDES.Create
' Create a string to encrypt.
Dim sData As String = "Here is some data to encrypt."
' Encrypt the string to an in-memory buffer.
Dim Data As Byte() = EncryptTextToMemory(sData, TripleDESalg.Key, TripleDESalg.IV)
' Decrypt the buffer back to a string.
Dim Final As String = DecryptTextFromMemory(Data, TripleDESalg.Key, TripleDESalg.IV)
' Display the decrypted string to the console.
Console.WriteLine(Final)
End Using
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Function EncryptTextToMemory(ByVal Data As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
Try
Dim ret As Byte()
' Create a MemoryStream.
Using mStream As New MemoryStream
' Create a new TripleDES object.
Using tripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the MemoryStream
' and the passed key and initialization vector (IV).
Using cStream As New CryptoStream(mStream, _
tripleDESalg.CreateEncryptor(Key, IV), CryptoStreamMode.Write)
' Convert the passed string to a byte array.
Dim toEncrypt As Byte() = New 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.
ret = mStream.ToArray()
End Using
End Using
End Using
' Return the encrypted buffer.
Return ret
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
Function DecryptTextFromMemory(ByVal Data() As Byte, ByVal Key() As Byte, ByVal IV() As Byte) As String
Try
Dim ret As String
' Create a new MemoryStream using the passed
' array of encrypted data.
Using msDecrypt As New MemoryStream(Data)
' Create a new TripleDES object.
Using tripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the MemoryStream
' and the passed key and initialization vector (IV).
Using csDecrypt As New CryptoStream(msDecrypt, _
tripleDESalg.CreateDecryptor(Key, IV), CryptoStreamMode.Read)
' Create buffer to hold the decrypted data.
Dim fromEncrypt(Data.Length - 1) As Byte
' 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.
ret = New ASCIIEncoding().GetString(fromEncrypt)
End Using
End Using
End Using
Return ret
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module
Comentários
Cria uma nova instância da classe TripleDES.
Confira também
Aplica-se a
Create(String)
Cria uma instância de um objeto criptográfico para realizar a implementação especificada do algoritmo TripleDES.
public:
static System::Security::Cryptography::TripleDES ^ Create(System::String ^ str);
public static System.Security.Cryptography.TripleDES? Create (string str);
public static System.Security.Cryptography.TripleDES Create (string str);
static member Create : string -> System.Security.Cryptography.TripleDES
Public Shared Function Create (str As String) As TripleDES
Parâmetros
Retornos
Uma instância de um objeto de criptografia.
Exemplos
O exemplo de código a seguir mostra como criar e usar um TripleDES objeto para criptografar e descriptografar dados em um arquivo.
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 new TripleDES object.
TripleDES^ tripleDESalg = TripleDES::Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream^ cStream = gcnew CryptoStream( fStream,tripleDESalg->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 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 new TripleDES object.
TripleDES^ tripleDESalg = TripleDES::Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream^ cStream = gcnew CryptoStream( fStream,tripleDESalg->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 error occurred: {0}", e->Message );
return nullptr;
}
}
int main()
{
try
{
// Create a new TripleDES object to generate a key
// and initialization vector (IV). Specify one
// of the recognized simple names for this
// algorithm.
TripleDES^ TripleDESalg = TripleDES::Create( "TripleDES" );
// 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, 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 );
}
}
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 initialization vector (IV). Specify one
// of the recognized simple names for this
// algorithm.
TripleDES TripleDESalg = TripleDES.Create("TripleDES");
// 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, 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.
FileStream fStream = File.Open(FileName,FileMode.OpenOrCreate);
// Create a new TripleDES object.
TripleDES tripleDESalg = TripleDES.Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream cStream = new CryptoStream(fStream,
tripleDESalg.CreateEncryptor(Key,IV),
CryptoStreamMode.Write);
// Create a StreamWriter using the CryptoStream.
StreamWriter sWriter = new 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 error occurred: {0}", e.Message);
}
}
public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV)
{
try
{
// Create or open the specified file.
FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);
// Create a new TripleDES object.
TripleDES tripleDESalg = TripleDES.Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream cStream = new CryptoStream(fStream,
tripleDESalg.CreateDecryptor(Key,IV),
CryptoStreamMode.Read);
// Create a StreamReader using the CryptoStream.
StreamReader sReader = new 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 null;
}
catch(UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
return null;
}
}
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Module TripleDESSample
Sub Main()
Try
' Create a new TripleDES object to generate a key
' and initialization vector (IV). Specify one
' of the recognized simple names for this
' algorithm.
Dim TripleDESalg As TripleDES = TripleDES.Create("TripleDES")
' Create a string to encrypt.
Dim sData As String = "Here is some data to encrypt."
Dim FileName As String = "CText.txt"
' 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.
Dim Final As String = DecryptTextFromFile(FileName, TripleDESalg.Key, TripleDESalg.IV)
' Display the decrypted string to the console.
Console.WriteLine(Final)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Sub EncryptTextToFile(ByVal Data As String, ByVal FileName As String, ByVal Key() As Byte, ByVal IV() As Byte)
Try
' Create or open the specified file.
Dim fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)
' Create a new TripleDES object.
Dim TripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the FileStream
' and the passed key and initialization vector (IV).
Dim cStream As New CryptoStream(fStream, _
TripleDESalg.CreateEncryptor(Key, IV), _
CryptoStreamMode.Write)
' Create a StreamWriter using the CryptoStream.
Dim sWriter As New 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 e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Catch e As UnauthorizedAccessException
Console.WriteLine("A file error occurred: {0}", e.Message)
End Try
End Sub
Function DecryptTextFromFile(ByVal FileName As String, ByVal Key() As Byte, ByVal IV() As Byte) As String
Try
' Create or open the specified file.
Dim fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)
' Create a new TripleDES object.
Dim TripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the FileStream
' and the passed key and initialization vector (IV).
Dim cStream As New CryptoStream(fStream, _
TripleDESalg.CreateDecryptor(Key, IV), _
CryptoStreamMode.Read)
' Create a StreamReader using the CryptoStream.
Dim sReader As New StreamReader(cStream)
' Read the data from the stream
' to decrypt it.
Dim val As String = sReader.ReadLine()
' Close the streams and
' close the file.
sReader.Close()
cStream.Close()
fStream.Close()
' Return the string.
Return val
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
Catch e As UnauthorizedAccessException
Console.WriteLine("A file error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module
O exemplo de código a seguir mostra como criar e usar um TripleDES objeto para criptografar e descriptografar dados na memória.
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). Specify one
// of the recognized simple names for this
// algorithm.
TripleDES^ TripleDESalg = TripleDES::Create( "TripleDES" );
// 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 );
}
}
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 initialization vector (IV). Specify one
// of the recognized simple names for this
// algorithm.
TripleDES TripleDESalg = TripleDES.Create("TripleDES");
// Create a string to encrypt.
string sData = "Here is some data to encrypt.";
// Encrypt the string to an in-memory buffer.
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);
}
}
public static byte[] EncryptTextToMemory(string Data, byte[] Key, byte[] IV)
{
try
{
// Create a MemoryStream.
MemoryStream mStream = new 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 = new CryptoStream(mStream,
tripleDESalg.CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
// Convert the passed string to a byte array.
byte[] toEncrypt = new 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.
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 null;
}
}
public static string DecryptTextFromMemory(byte[] Data, byte[] Key, byte[] IV)
{
try
{
// Create a new MemoryStream using the passed
// array of encrypted data.
MemoryStream msDecrypt = new 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 = new CryptoStream(msDecrypt,
tripleDESalg.CreateDecryptor(Key, IV),
CryptoStreamMode.Read);
// Create buffer to hold the decrypted data.
byte[] fromEncrypt = new 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 new ASCIIEncoding().GetString(fromEncrypt);
}
catch(CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
return null;
}
}
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Module TripleDESPSample
Sub Main()
Try
' Create a new TripleDES object to generate a key
' and initialization vector (IV). Specify one
' of the recognized simple names for this
' algorithm.
Dim TripleDESalg As TripleDES = TripleDES.Create("TripleDES")
' Create a string to encrypt.
Dim sData As String = "Here is some data to encrypt."
' Encrypt the string to an in-memory buffer.
Dim Data As Byte() = EncryptTextToMemory(sData, TripleDESalg.Key, TripleDESalg.IV)
' Decrypt the buffer back to a string.
Dim Final As String = DecryptTextFromMemory(Data, TripleDESalg.Key, TripleDESalg.IV)
' Display the decrypted string to the console.
Console.WriteLine(Final)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Function EncryptTextToMemory(ByVal Data As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
Try
' Create a MemoryStream.
Dim mStream As New MemoryStream
' Create a new TripleDES object.
Dim tripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the MemoryStream
' and the passed key and initialization vector (IV).
Dim cStream As New CryptoStream(mStream, _
tripleDESalg.CreateEncryptor(Key, IV), _
CryptoStreamMode.Write)
' Convert the passed string to a byte array.
Dim toEncrypt As Byte() = New 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.
Dim ret As Byte() = mStream.ToArray()
' Close the streams.
cStream.Close()
mStream.Close()
' Return the encrypted buffer.
Return ret
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
Function DecryptTextFromMemory(ByVal Data() As Byte, ByVal Key() As Byte, ByVal IV() As Byte) As String
Try
' Create a new MemoryStream using the passed
' array of encrypted data.
Dim msDecrypt As New MemoryStream(Data)
' Create a new TripleDES object.
Dim tripleDESalg As TripleDES = TripleDES.Create
' Create a CryptoStream using the MemoryStream
' and the passed key and initialization vector (IV).
Dim csDecrypt As New CryptoStream(msDecrypt, _
tripleDESalg.CreateDecryptor(Key, IV), _
CryptoStreamMode.Read)
' Create buffer to hold the decrypted data.
Dim fromEncrypt(Data.Length - 1) As Byte
' 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 New ASCIIEncoding().GetString(fromEncrypt)
Catch e As CryptographicException
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
Return Nothing
End Try
End Function
End Module