Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe CryptoStream

 

Define uma transmissão que liga fluxos de dados a transformações criptográficas.

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

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.Security.Cryptography.CryptoStream

[ComVisibleAttribute(true)]
public class CryptoStream : Stream, IDisposable

NomeDescrição
System_CAPS_pubmethodCryptoStream(Stream, ICryptoTransform, CryptoStreamMode)

Inicializa uma nova instância da classe CryptoStream com um fluxo de dados de destino, a transformação a ser usada e o modo do fluxo.

NomeDescrição
System_CAPS_pubpropertyCanRead

Obtém um valor que indica se o CryptoStream atual é legível.(Substitui o Stream.CanRead.)

System_CAPS_pubpropertyCanSeek

Obtém um valor que indica se você pode buscar no atual CryptoStream.(Substitui o Stream.CanSeek.)

System_CAPS_pubpropertyCanTimeout

Obtém um valor que determina se o tempo limite do fluxo atual de pode expirar. (Herdado de Stream.)

System_CAPS_pubpropertyCanWrite

Obtém um valor que indica se o atual CryptoStream é gravável.(Substitui o Stream.CanWrite.)

System_CAPS_pubpropertyHasFlushedFinalBlock

Obtém um valor que indica se o bloco de buffer final foi escrito para o fluxo subjacente.

System_CAPS_pubpropertyLength

Obtém o comprimento em bytes do fluxo.(Substitui o Stream.Length.)

System_CAPS_pubpropertyPosition

Obtém ou define a posição dentro do fluxo atual.(Substitui o Stream.Position.)

System_CAPS_pubpropertyReadTimeout

Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará realizar a leitura antes do tempo limite.(Herdado de Stream.)

System_CAPS_pubpropertyWriteTimeout

Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará realizar a gravação antes do tempo limite.(Herdado de Stream.)

NomeDescrição
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de leitura assíncrona. (Considere o uso de ReadAsync; consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de gravação assíncrona. (Considere usar WriteAsync; consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodClear()

Libera todos os recursos usados pelo CryptoStream.

System_CAPS_pubmethodClose()

Fecha o fluxo atual e libera todos os recursos (como soquetes e identificadores de arquivos) associados ao fluxo atual. Em vez de chamar esse método, verifique se o fluxo é descartado corretamente.(Herdado de Stream.)

System_CAPS_pubmethodCopyTo(Stream)

Lê os bytes do fluxo atual e os grava em outro fluxo. (Herdado de Stream.)

System_CAPS_pubmethodCopyTo(Stream, Int32)

Lê os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. (Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(Stream)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. (Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. (Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado e token de cancelamento. (Herdado de Stream.)

System_CAPS_pubmethodCreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.(Herdado de MarshalByRefObject.)

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Aloca um objeto WaitHandle.(Herdado de Stream.)

System_CAPS_pubmethodDispose()

Libera todos os recursos usados pelo Stream.(Herdado de Stream.)

System_CAPS_protmethodDispose(Boolean)

Libera os recursos não gerenciados usados pelo CryptoStream e opcionalmente libera os recursos gerenciados.(Substitui o Stream.Dispose(Boolean).)

System_CAPS_pubmethodEndRead(IAsyncResult)

Espera a leitura assíncrona pendente ser concluída. (Considere o uso de ReadAsync, consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodEndWrite(IAsyncResult)

Encerra uma operação de gravação assíncrona. (Considere usar WriteAsync; consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)

System_CAPS_pubmethodFlush()

Limpa todos os buffers para o fluxo atual e faz com que todos os dados armazenados em buffer a ser gravado para o dispositivo subjacente.(Substitui o Stream.Flush().)

System_CAPS_pubmethodFlushAsync()

Limpa de forma assíncrona todos os buffers deste fluxo e faz com que todos os dados em buffer sejam gravados no dispositivo subjacente. (Herdado de Stream.)

System_CAPS_pubmethodFlushAsync(CancellationToken)

Limpa todos os buffers do fluxo atual de forma assíncrona, faz com que todos os dados armazenados em buffer a ser gravado para o dispositivo subjacente e monitora as solicitações de cancelamento.(Substitui o Stream.FlushAsync(CancellationToken).)

System_CAPS_pubmethodFlushFinalBlock()

Atualiza a fonte de dados ou o repositório subjacente com o estado atual do buffer e, em seguida, limpa o buffer.

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetLifetimeService()

Recupera o objeto atual de serviço de vida útil que controla a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethodInitializeLifetimeService()

Obtém um objeto de serviço de tempo de vida para controlar a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_protmethodMemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.(Herdado de MarshalByRefObject.)

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Fornece suporte para um Contract.(Herdado de Stream.)

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Lê uma sequência de bytes do fluxo atual e avança a posição no fluxo até o número de bytes lidos.(Substitui o Stream.Read(Byte[], Int32, Int32).)

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32)

Lê de forma assíncrona uma sequência de bytes do fluxo atual e avança a posição do fluxo pelo número de bytes. (Herdado de Stream.)

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

Lê uma sequência de bytes do fluxo atual de forma assíncrona, avança a posição dentro do fluxo pelo número de bytes lidos e monitora as solicitações de cancelamento.(Substitui o Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodReadByte()

Lê um byte do fluxo e avança a posição no fluxo em um byte ou retorna -1 caso esteja no final do fluxo.(Herdado de Stream.)

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Define a posição dentro do fluxo atual.(Substitui o Stream.Seek(Int64, SeekOrigin).)

System_CAPS_pubmethodSetLength(Int64)

Define o comprimento do fluxo atual.(Substitui o Stream.SetLength(Int64).)

System_CAPS_pubmethodToString()

Retorna uma string que representa o objeto atual.(Herdado de Object.)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Grava assincronamente uma sequência de bytes no CryptoStream atual e avança a posição atual no fluxo pelo número de bytes gravados.(Substitui o Stream.Write(Byte[], Int32, Int32).)

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32)

Grava assincronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo no número de bytes gravados.(Herdado de Stream.)

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32, CancellationToken)

Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro do fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento.(Substitui o Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodWriteByte(Byte)

Grava um byte na posição atual no fluxo e avança a posição dentro no fluxo em um byte.(Herdado de Stream.)

The common language runtime uses a stream-oriented design for cryptography. The core of this design is T:System.Security.Cryptography.CryptoStream. Any cryptographic objects that implement T:System.Security.Cryptography.CryptoStream can be chained together with any objects that implement T:System.IO.Stream, so the streamed output from one object can be fed into the input of another object. The intermediate result (the output from the first object) does not need to be stored separately.

System_CAPS_importantImportante

This type implements the T:System.IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly by calling its M:System.Security.Cryptography.CryptoStream.Clear method, which in turn calls its T:System.IDisposable implementation. To dispose of the type directly, call its M:System.Security.Cryptography.CryptoStream.Clear method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the T:System.IDisposable interface topic.

You should always explicitly close your T:System.Security.Cryptography.CryptoStream object after you are done using it by calling the M:System.Security.Cryptography.CryptoStream.Clear method. Doing so flushes the underlying stream and causes all remaining blocks of data to be processed by the T:System.Security.Cryptography.CryptoStream object. However, if an exception occurs before you call the M:System.IO.Stream.Close method, the T:System.Security.Cryptography.CryptoStream object might not be closed. To ensure that the M:System.IO.Stream.Close method always gets called, place your call to the M:System.Security.Cryptography.CryptoStream.Clear method within the finally block of a try/catch statement.

The following example demonstrates how to use a T:System.Security.Cryptography.CryptoStream to encrypt a string. This method uses T:System.Security.Cryptography.RijndaelManaged class with the specified P:System.Security.Cryptography.SymmetricAlgorithm.Key and initialization vector (P:System.Security.Cryptography.SymmetricAlgorithm.IV).

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

namespace RijndaelManaged_Example
{
    class RijndaelExample
    {
        public static void Main()
        {
            try
            {

                string original = "Here is some data to encrypt!";

                // Create a new instance of the Rijndael
                // class.  This generates a new key and initialization 
                // vector (IV).
                using (Rijndael myRijndael = Rijndael.Create())
                {
                    // Encrypt the string to an array of bytes.
                    byte[] encrypted = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV);

                    // Decrypt the bytes to a string.
                    string roundtrip = DecryptStringFromBytes(encrypted, myRijndael.Key, myRijndael.IV);

                    //Display the original data and the decrypted data.
                    Console.WriteLine("Original:   {0}", original);
                    Console.WriteLine("Round Trip: {0}", roundtrip);
                }

            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }
        static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
        {
            // Check arguments.
            if (plainText == null || plainText.Length <= 0)
                throw new ArgumentNullException("plainText");
            if (Key == null || Key.Length <= 0)
                throw new ArgumentNullException("Key");
            if (IV == null || IV.Length <= 0)
                throw new ArgumentNullException("IV");
            byte[] encrypted;
            // Create an Rijndael object
            // with the specified key and IV.
            using (Rijndael rijAlg = Rijndael.Create())
            {
                rijAlg.Key = Key;
                rijAlg.IV = IV;

                // Create an encryptor to perform the stream transform.
                ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);

                // Create the streams used for encryption.
                using (MemoryStream msEncrypt = new MemoryStream())
                {
                    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                    {
                        using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                        {

                            //Write all data to the stream.
                            swEncrypt.Write(plainText);
                        }
                        encrypted = msEncrypt.ToArray();
                    }
                }
            }


            // Return the encrypted bytes from the memory stream.
            return encrypted;

        }

        static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
        {
            // Check arguments.
            if (cipherText == null || cipherText.Length <= 0)
                throw new ArgumentNullException("cipherText");
            if (Key == null || Key.Length <= 0)
                throw new ArgumentNullException("Key");
            if (IV == null || IV.Length <= 0)
                throw new ArgumentNullException("IV");

            // Declare the string used to hold
            // the decrypted text.
            string plaintext = null;

            // Create an Rijndael object
            // with the specified key and IV.
            using (Rijndael rijAlg = Rijndael.Create())
            {
                rijAlg.Key = Key;
                rijAlg.IV = IV;

                // Create a decryptor to perform the stream transform.
                ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);

                // Create the streams used for decryption.
                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {

                            // Read the decrypted bytes from the decrypting stream
                            // and place them in a string.
                            plaintext = srDecrypt.ReadToEnd();
                        }
                    }
                }

            }

            return plaintext;

        }
    }
}

.NET Framework
Disponível desde 1.1
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: