RC2CryptoServiceProvider Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define um objeto wrapper para aceder à implementação do fornecedor de serviços criptográficos (CSP) do RC2 algoritmo. Esta classe não pode ser herdada.
public ref class RC2CryptoServiceProvider sealed : System::Security::Cryptography::RC2
public sealed class RC2CryptoServiceProvider : System.Security.Cryptography.RC2
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RC2CryptoServiceProvider : System.Security.Cryptography.RC2
type RC2CryptoServiceProvider = class
inherit RC2
[<System.Runtime.InteropServices.ComVisible(true)>]
type RC2CryptoServiceProvider = class
inherit RC2
Public NotInheritable Class RC2CryptoServiceProvider
Inherits RC2
- Herança
- Atributos
Exemplos
O exemplo de código seguinte encripta e depois desencripta uma cadeia.
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
namespace RC2CryptoServiceProvider_Examples
{
class MyMainClass
{
public static void Main()
{
// Create a new instance of the RC2CryptoServiceProvider class
// and automatically generate a Key and IV.
RC2CryptoServiceProvider rc2CSP = new RC2CryptoServiceProvider();
Console.WriteLine("Effective key size is {0} bits.", rc2CSP.EffectiveKeySize);
// Get the key and IV.
byte[] key = rc2CSP.Key;
byte[] IV = rc2CSP.IV;
// Get an encryptor.
ICryptoTransform encryptor = rc2CSP.CreateEncryptor(key, IV);
// Encrypt the data as an array of encrypted bytes in memory.
MemoryStream msEncrypt = new MemoryStream();
CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
// Convert the data to a byte array.
string original = "Here is some data to encrypt.";
byte[] toEncrypt = Encoding.ASCII.GetBytes(original);
// Write all data to the crypto stream and flush it.
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
// Get the encrypted array of bytes.
byte[] encrypted = msEncrypt.ToArray();
///////////////////////////////////////////////////////
// This is where the data could be transmitted or saved.
///////////////////////////////////////////////////////
//Get a decryptor that uses the same key and IV as the encryptor.
ICryptoTransform decryptor = rc2CSP.CreateDecryptor(key, IV);
// Now decrypt the previously encrypted message using the decryptor
// obtained in the above step.
MemoryStream msDecrypt = new MemoryStream(encrypted);
CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
// Read the decrypted bytes from the decrypting stream
// and place them in a StringBuilder class.
StringBuilder roundtrip = new StringBuilder();
int b = 0;
do
{
b = csDecrypt.ReadByte();
if (b != -1)
{
roundtrip.Append((char)b);
}
} while (b != -1);
// Display the original data and the decrypted data.
Console.WriteLine("Original: {0}", original);
Console.WriteLine("Round Trip: {0}", roundtrip);
}
}
}
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
Module Crypto
Sub Main()
' Create a new instance of the RC2CryptoServiceProvider class
' and automatically generate a Key and IV.
Dim rc2CSP As New RC2CryptoServiceProvider()
Console.WriteLine("Effective key size is {0} bits.", rc2CSP.EffectiveKeySize)
' Get the key and IV.
Dim key As Byte() = rc2CSP.Key
Dim IV As Byte() = rc2CSP.IV
' Get an encryptor.
Dim encryptor As ICryptoTransform = rc2CSP.CreateEncryptor(key, IV)
' Encrypt the data as an array of encrypted bytes in memory.
Dim msEncrypt As New MemoryStream()
Dim csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
' Convert the data to a byte array.
Dim original As String = "Here is some data to encrypt."
Dim toEncrypt As Byte() = Encoding.ASCII.GetBytes(original)
' Write all data to the crypto stream and flush it.
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length)
csEncrypt.FlushFinalBlock()
' Get the encrypted array of bytes.
Dim encrypted As Byte() = msEncrypt.ToArray()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This is where the data could be transmitted or saved.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Get a decryptor that uses the same key and IV as the encryptor.
Dim decryptor As ICryptoTransform = rc2CSP.CreateDecryptor(key, IV)
' Now decrypt the previously encrypted message using the decryptor
' obtained in the above step.
Dim msDecrypt As New MemoryStream(encrypted)
Dim csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)
' Read the decrypted bytes from the decrypting stream
' and place them in a StringBuilder class.
Dim roundtrip As New StringBuilder()
Dim b As Integer = 0
Do
b = csDecrypt.ReadByte()
If b <> -1 Then
roundtrip.Append(ChrW(b))
End If
Loop While b <> -1
' Display the original data and the decrypted data.
Console.WriteLine("Original: {0}", original)
Console.WriteLine("Round Trip: {0}", roundtrip)
End Sub
End Module
Observações
A RC2CryptoServiceProvider implementação suporta comprimentos de chave de 40 bits a 128 bits em incrementos de 8 bits.
O RC2CryptoServiceProvider objeto é uma cifra por blocos que encripta e desencripta dados em blocos de 8 bytes. Esta classe preenche o bloco final de dados se for inferior a 8 bytes. Como resultado deste enchimento, o comprimento dos dados encriptados pode ser maior do que o texto original em claro.
Note que o RC2CryptoServiceProvider objeto não usa sal.
Note
Está disponível um algoritmo de encriptação simétrica mais recente, Advanced Encryption Standard (AES). Considere usar o Aes algoritmo e as suas classes derivadas em vez da classe RC2CryptoServiceProvider . Use RC2CryptoServiceProvider apenas para compatibilidade com aplicações e dados legados.
Construtores
| Name | Description |
|---|---|
| RC2CryptoServiceProvider() |
Inicializa uma nova instância da RC2CryptoServiceProvider classe. |
Campos
| Name | Description |
|---|---|
| BlockSizeValue |
Representa o tamanho do bloco, em bits, da operação criptográfica. (Herdado de SymmetricAlgorithm) |
| EffectiveKeySizeValue |
Representa o tamanho efetivo da chave secreta usada pelo RC2 algoritmo em bits. (Herdado de RC2) |
| FeedbackSizeValue |
Representa o tamanho do feedback, em bits, da operação criptográfica. (Herdado de SymmetricAlgorithm) |
| IVValue |
Representa o vetor de inicialização (IV) para o algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| KeySizeValue |
Representa o tamanho, em bits, da chave secreta usada pelo algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| KeyValue |
Representa a chave secreta para o algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| LegalBlockSizesValue |
Especifica os tamanhos dos blocos, em bits, suportados pelo algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| LegalKeySizesValue |
Especifica os tamanhos de chave, em bits, suportados pelo algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| ModeValue |
Representa o modo de cifra usado no algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| PaddingValue |
Representa o modo de enchimento usado no algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
Propriedades
| Name | Description |
|---|---|
| BlockSize |
Obtém ou define o tamanho do bloco, em bits, da operação criptográfica. (Herdado de SymmetricAlgorithm) |
| EffectiveKeySize |
Obtém ou define o tamanho efetivo, em bits, da chave secreta usada pelo RC2 algoritmo. |
| FeedbackSize |
Obtém ou define o tamanho do feedback, em bits, da operação criptográfica para os modos de cifra de Cifra Feedback (CFB) e Output Feedback (OFB). (Herdado de SymmetricAlgorithm) |
| IV |
Obtém ou define o vetor de inicialização (IV) para o algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| Key |
Obtém ou define a chave secreta para o algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| KeySize |
Obtém ou define o tamanho da chave secreta usada pelo RC2 algoritmo em bits. (Herdado de RC2) |
| LegalBlockSizes |
Obtém os tamanhos dos blocos, em bits, suportados pelo algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| LegalKeySizes |
Obtém os tamanhos das chaves, em bits, suportados pelo algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| Mode |
Obtém ou define o modo de operação do algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| Padding |
Obtém ou define o modo de enchimento usado no algoritmo simétrico. (Herdado de SymmetricAlgorithm) |
| UseSalt |
Recebe ou define um valor que determina se deve criar uma chave com um sal de 11 bytes de comprimento e valor zero. |
Métodos
| Name | Description |
|---|---|
| Clear() |
Liberta todos os recursos usados pela SymmetricAlgorithm turma. (Herdado de SymmetricAlgorithm) |
| CreateDecryptor() |
Cria um objeto desencriptador simétrico com a propriedade atual Key e o vetor de inicialização (IV). (Herdado de SymmetricAlgorithm) |
| CreateDecryptor(Byte[], Byte[]) |
Cria um objeto desencriptador simétrico RC2 com a chave especificada (Key) e vetor de inicialização (IV). |
| CreateEncryptor() |
Cria um objeto encriptador simétrico com a propriedade atual Key e o vetor de inicialização (IV). (Herdado de SymmetricAlgorithm) |
| CreateEncryptor(Byte[], Byte[]) |
Cria um objeto encriptador simétrico RC2 com a chave especificada (Key) e o vetor de inicialização (IV). |
| Dispose() |
Liberta todos os recursos usados pela instância atual da SymmetricAlgorithm classe. (Herdado de SymmetricAlgorithm) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo SymmetricAlgorithm e opcionalmente liberta os recursos geridos. (Herdado de SymmetricAlgorithm) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GenerateIV() |
Gera um vetor de inicialização aleatório (IV) para usar no algoritmo. |
| GenerateKey() |
Gera uma chave aleatória (Key) para ser usada no algoritmo. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| ValidKeySize(Int32) |
Determina se o tamanho da chave especificado é válido para o algoritmo atual. (Herdado de SymmetricAlgorithm) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código. Liberta os recursos não geridos usados pelo SymmetricAlgorithm e opcionalmente liberta os recursos geridos. (Herdado de SymmetricAlgorithm) |