RC2CryptoServiceProvider Clase

Definición

Precaución

Derived cryptographic types are obsolete. Use the Create method on the base type instead.

Define un objeto contenedor para obtener acceso a la implementación del proveedor de servicios criptográficos (CSP) del algoritmo RC2. Esta clase no puede heredarse.

public ref class RC2CryptoServiceProvider sealed : System::Security::Cryptography::RC2
public sealed class RC2CryptoServiceProvider : System.Security.Cryptography.RC2
[System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
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.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type RC2CryptoServiceProvider = class
    inherit RC2
[<System.Runtime.InteropServices.ComVisible(true)>]
type RC2CryptoServiceProvider = class
    inherit RC2
Public NotInheritable Class RC2CryptoServiceProvider
Inherits RC2
Herencia
RC2CryptoServiceProvider
Atributos

Ejemplos

En el ejemplo de código siguiente se cifra y, a continuación, se descifra una cadena.

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

Comentarios

La RC2CryptoServiceProvider implementación admite longitudes de clave de 40 bits a 128 bits en incrementos de 8 bits.

El RC2CryptoServiceProvider objeto es un cifrado de bloques que cifra y descifra datos en bloques de 8 bytes. Esta clase rellena el bloque final de datos si es inferior a 8 bytes. Como resultado de este relleno, la longitud de los datos cifrados podría ser mayor que el texto no cifrado original.

Tenga en cuenta que el RC2CryptoServiceProvider objeto no usa sal.

Nota

Hay disponible un algoritmo de cifrado simétrico más reciente, Estándar de cifrado avanzado (AES). Considere la posibilidad de usar el Aes algoritmo y sus clases derivadas en lugar de la RC2CryptoServiceProvider clase . Use RC2CryptoServiceProvider solo para la compatibilidad con los datos y las aplicaciones heredadas.

Constructores

RC2CryptoServiceProvider()

Inicializa una nueva instancia de la clase RC2CryptoServiceProvider.

Campos

BlockSizeValue

Representa el tamaño del bloque de la operación criptográfica en bits.

(Heredado de SymmetricAlgorithm)
EffectiveKeySizeValue

Representa el tamaño efectivo de la clave secreta utilizada por el algoritmo RC2 en bits.

(Heredado de RC2)
FeedbackSizeValue

Representa el tamaño de respuesta de la operación criptográfica en bits.

(Heredado de SymmetricAlgorithm)
IVValue

Representa el vector de inicialización (IV) del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
KeySizeValue

Representa el tamaño en bits de la clave secreta que usa el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
KeyValue

Representa la clave secreta del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
LegalBlockSizesValue

Especifica los tamaños de bloque, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
LegalKeySizesValue

Especifica los tamaños de clave, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
ModeValue

Representa el modo de cifrado usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
PaddingValue

Representa el modo de relleno usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)

Propiedades

BlockSize

Obtiene o establece el tamaño del bloque de la operación criptográfica en bits.

(Heredado de SymmetricAlgorithm)
EffectiveKeySize

Obtiene o establece el tamaño efectivo en bits de la clave secreta utilizada por el algoritmo RC2.

FeedbackSize

Obtiene o establece el tamaño de los comentarios, en bits, de la operación criptográfica de los modos de cifrado Comentarios de cifrado (CFB) y Comentarios de salida (OFB).

(Heredado de SymmetricAlgorithm)
IV

Obtiene o establece el vector de inicialización (IV) del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
Key

Obtiene o establece la clave secreta del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
KeySize

Obtiene o establece el tamaño de la clave secreta usada por el algoritmo RC2 en bits.

(Heredado de RC2)
LegalBlockSizes

Obtiene los tamaños de bloque, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
LegalKeySizes

Obtiene los tamaños de clave, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
Mode

Obtiene o establece el modo de funcionamiento del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
Padding

Obtiene o establece el modo de relleno usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
UseSalt

Obtiene o establece un valor que determina si crear una clave con un valor salt cero de 11 bytes de longitud.

Métodos

Clear()

Libera todos los recursos que utiliza la clase SymmetricAlgorithm.

(Heredado de SymmetricAlgorithm)
CreateDecryptor()

Crea un objeto descifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

(Heredado de SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

Crea un objeto descifrador RC2 simétrico con la clave (Key) y el vector de inicialización (IV) especificados.

CreateEncryptor()

Crea un objeto cifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

(Heredado de SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

Crea un objeto cifrador RC2 simétrico con la clave (Key) y el vector de inicialización (IV) especificados.

DecryptCbc(Byte[], Byte[], PaddingMode)

Descifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Descifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Descifra los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)

Descifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Descifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Descifra los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptEcb(Byte[], PaddingMode)

Descifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Descifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Descifra los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
Dispose()

Libera todos los recursos usados por la instancia actual de la clase SymmetricAlgorithm.

(Heredado de SymmetricAlgorithm)
Dispose(Boolean)

Libera los recursos no administrados que usa SymmetricAlgorithm y, de forma opcional, libera los recursos administrados.

(Heredado de SymmetricAlgorithm)
EncryptCbc(Byte[], Byte[], PaddingMode)

Cifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Cifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Cifra los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)

Cifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Cifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Cifra los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptEcb(Byte[], PaddingMode)

Cifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Cifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Cifra los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GenerateIV()

Genera un vector de inicialización aleatorio (IV) que se va a utilizar para el algoritmo.

GenerateKey()

Genera una propiedad (Key) aleatoria que se va a utilizar para el algoritmo.

GetCiphertextLengthCbc(Int32, PaddingMode)

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo CBC.

(Heredado de SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo CFB.

(Heredado de SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo ECB.

(Heredado de SymmetricAlgorithm)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Intenta descifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Intenta descifrar los datos en el búfer especificado, usando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, mediante el modo CFB con el modo de relleno especificado y el tamaño de comentarios.

(Heredado de SymmetricAlgorithm)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Intenta descifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Intenta cifrar los datos en el búfer especificado mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado, mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Intenta cifrar los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado, mediante el modo CFB con el modo de relleno especificado y el tamaño de comentarios.

(Heredado de SymmetricAlgorithm)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Intenta cifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
ValidKeySize(Int32)

Determina si el tamaño de clave especificado es válido para el algoritmo actual.

(Heredado de SymmetricAlgorithm)

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Libera los recursos no administrados que usa SymmetricAlgorithm y, de forma opcional, libera los recursos administrados.

(Heredado de SymmetricAlgorithm)

Se aplica a

Consulte también