RC2CryptoServiceProvider Класс

Определение

Определяет объект-оболочку для доступа к реализации алгоритма RC2, предоставляемой поставщиком служб шифрования (CSP).Defines a wrapper object to access the cryptographic service provider (CSP) implementation of the RC2 algorithm. Этот класс не наследуется.This class cannot be inherited.

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
Наследование
RC2CryptoServiceProvider
Атрибуты

Примеры

В следующем примере кода выполняется шифрование и расшифровка строки.The following code example encrypts and then decrypts a string.

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);

            Console.ReadLine();
        }
    }
}
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)

        Console.ReadLine()

    End Sub
End Module

Комментарии

RC2CryptoServiceProviderРеализация поддерживает ключи длиной от 40 бит до 128 бит с шагом в 8 бит.The RC2CryptoServiceProvider implementation supports key lengths from 40 bits to 128 bits in increments of 8 bits.

RC2CryptoServiceProviderОбъект — это блочный шифр, который шифрует и расшифровывает данные в блоках по 8 байт.The RC2CryptoServiceProvider object is a block cipher that encrypts and decrypts data in blocks of 8 bytes. Этот класс дополняет последний блок данных, если он меньше 8 байт.This class pads the final block of data if it is less than 8 bytes. В результате этого заполнения длина зашифрованных данных может быть больше, чем исходный открытый текст.As a result of this padding, the length of encrypted data could be greater than the original plaintext.

Обратите внимание, что RC2CryptoServiceProvider объект не использует Salt.Note that the RC2CryptoServiceProvider object does not use salt.

Примечание

Доступен более новый алгоритм симметричного шифрования, AES (AES).A newer symmetric encryption algorithm, Advanced Encryption Standard (AES), is available. Рассмотрите возможность использования Aes алгоритма и его производных классов вместо RC2CryptoServiceProvider класса.Consider using the Aes algorithm and its derived classes instead of the RC2CryptoServiceProvider class. Используйте RC2CryptoServiceProvider только для обеспечения совместимости с устаревшими приложениями и данными.Use RC2CryptoServiceProvider only for compatibility with legacy applications and data.

Конструкторы

RC2CryptoServiceProvider()

Инициализирует новый экземпляр класса RC2CryptoServiceProvider.Initializes a new instance of the RC2CryptoServiceProvider class.

Поля

BlockSizeValue

Представляет размер блока криптографической операции (в битах).Represents the block size, in bits, of the cryptographic operation.

(Унаследовано от SymmetricAlgorithm)
EffectiveKeySizeValue

Представляет эффективный размер секретного ключа (в битах), используемого алгоритмом RC2.Represents the effective size of the secret key used by the RC2 algorithm in bits.

(Унаследовано от RC2)
FeedbackSizeValue

Представляет размер порции данных обратной связи для криптографической операции (в битах).Represents the feedback size, in bits, of the cryptographic operation.

(Унаследовано от SymmetricAlgorithm)
IVValue

Представляет вектор инициализации (IV) для алгоритма симметричного шифрования.Represents the initialization vector (IV) for the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
KeySizeValue

Представляет размер секретного ключа (в битах), используемого алгоритмом симметричного шифрования.Represents the size, in bits, of the secret key used by the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
KeyValue

Представляет секретный ключ для алгоритма симметричного шифрования.Represents the secret key for the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
LegalBlockSizesValue

Задает размеры блоков (в битах), которые поддерживаются алгоритмом симметричного шифрования.Specifies the block sizes, in bits, that are supported by the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
LegalKeySizesValue

Задает размеры ключа (в битах), которые поддерживаются алгоритмом симметричного шифрования.Specifies the key sizes, in bits, that are supported by the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
ModeValue

Представляет режим шифрования, используемый в алгоритме симметричного шифрования.Represents the cipher mode used in the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
PaddingValue

Представляет режим заполнения, используемый в алгоритме симметричного шифрования.Represents the padding mode used in the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)

Свойства

BlockSize

Получает или задает размер блока криптографической операции (в битах).Gets or sets the block size, in bits, of the cryptographic operation.

(Унаследовано от SymmetricAlgorithm)
EffectiveKeySize

Получает или задает эффективный размер секретного ключа (в битах), используемого алгоритмом RC2.Gets or sets the effective size, in bits, of the secret key used by the RC2 algorithm.

FeedbackSize

Возвращает или задает размер ответа криптографической операции (в битах) для режимов шифрования "Обратная связь по шифру" (CFB) и "Выходная обратная связь" (OFB).Gets or sets the feedback size, in bits, of the cryptographic operation for the Cipher Feedback (CFB) and Output Feedback (OFB) cipher modes.

(Унаследовано от SymmetricAlgorithm)
IV

Получает или задает вектор инициализации (IV) для алгоритма симметричного шифрования.Gets or sets the initialization vector (IV) for the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
Key

Получает или задает секретный ключ для алгоритма симметричного шифрования.Gets or sets the secret key for the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
KeySize

Получает или задает размер секретного ключа, используемого алгоритмом RC2, в битах.Gets or sets the size of the secret key used by the RC2 algorithm in bits.

(Унаследовано от RC2)
LegalBlockSizes

Получает размеры блоков (в битах), которые поддерживаются алгоритмом симметричного шифрования.Gets the block sizes, in bits, that are supported by the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
LegalKeySizes

Получает размеры ключа (в битах), которые поддерживаются алгоритмом симметричного шифрования.Gets the key sizes, in bits, that are supported by the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
Mode

Получает или задает режим работы алгоритма симметричного шифрования.Gets or sets the mode for operation of the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
Padding

Получает или задает режим заполнения, используемый в алгоритме симметричного шифрования.Gets or sets the padding mode used in the symmetric algorithm.

(Унаследовано от SymmetricAlgorithm)
UseSalt

Получает или задает значение, определяющее необходимость создания ключа с привязкой, имеющей длину 11 байтов и нулевое значение.Gets or sets a value that determines whether to create a key with an 11-byte-long, zero-value salt.

Методы

Clear()

Освобождает все ресурсы, используемые классом SymmetricAlgorithm.Releases all resources used by the SymmetricAlgorithm class.

(Унаследовано от SymmetricAlgorithm)
CreateDecryptor()

Создает объект-дешифратор для алгоритма симметричного шифрования с текущим свойством Key и вектором инициализации (IV).Creates a symmetric decryptor object with the current Key property and initialization vector (IV).

(Унаследовано от SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

Создает объект-дешифратор для алгоритма симметричного шифрования RC2 с заданным ключом (Key) и вектором инициализации (IV).Creates a symmetric RC2 decryptor object with the specified key (Key) and initialization vector (IV).

CreateEncryptor()

Создает объект-шифратор для алгоритма симметричного шифрования с текущим свойством Key и вектором инициализации (IV).Creates a symmetric encryptor object with the current Key property and initialization vector (IV).

(Унаследовано от SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

Создает объект-шифратор для алгоритма симметричного шифрования RC2 с заданным ключом (Key) и вектором инициализации (IV).Creates a symmetric RC2 encryptor object with the specified key (Key) and initialization vector (IV).

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса SymmetricAlgorithm.Releases all resources used by the current instance of the SymmetricAlgorithm class.

(Унаследовано от SymmetricAlgorithm)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом SymmetricAlgorithm, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

(Унаследовано от SymmetricAlgorithm)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GenerateIV()

Создает случайный вектор инициализации (IV), используемый для данного алгоритма.Generates a random initialization vector (IV) to use for the algorithm.

GenerateKey()

Создает случайный ключ (Key), используемый для данного алгоритма.Generates a random key (Key) to be used for the algorithm.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
ValidKeySize(Int32)

Определяет, является ли заданный размер ключа допустимым для текущего алгоритма.Determines whether the specified key size is valid for the current algorithm.

(Унаследовано от SymmetricAlgorithm)

Явные реализации интерфейса

IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Освобождает неуправляемые ресурсы, используемые объектом SymmetricAlgorithm, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

(Унаследовано от SymmetricAlgorithm)

Применяется к

См. также раздел