RC2CryptoServiceProvider Класс

Определение

Внимание!

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

Определяет объект-оболочку для доступа к реализации алгоритма RC2, предоставляемой поставщиком служб шифрования (CSP). Этот класс не наследуется.

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

Примеры

В следующем примере кода выполняется шифрование и расшифровка строки.

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

Комментарии

Реализация RC2CryptoServiceProvider поддерживает длину ключей от 40 до 128 бит с шагом 8 бит.

Объект RC2CryptoServiceProvider представляет собой блочный шифр, который шифрует и расшифровывает данные блоками по 8 байт. Этот класс заполняет последний блок данных, если он меньше 8 байт. В результате такого заполнения длина зашифрованных данных может быть больше, чем исходный открытый текст.

Обратите внимание, что RC2CryptoServiceProvider объект не использует соль.

Примечание

Доступен более новый алгоритм симметричного шифрования Advanced Encryption Standard (AES). Рассмотрите возможность использования алгоритма Aes и его производных RC2CryptoServiceProvider классов вместо класса . Используйте RC2CryptoServiceProvider только для совместимости с устаревшими приложениями и данными.

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

RC2CryptoServiceProvider()
Устаревшие..

Инициализирует новый экземпляр класса RC2CryptoServiceProvider.

Поля

BlockSizeValue
Устаревшие..

Представляет размер блока криптографической операции (в битах).

(Унаследовано от SymmetricAlgorithm)
EffectiveKeySizeValue
Устаревшие..

Представляет эффективный размер секретного ключа (в битах), используемого алгоритмом RC2.

(Унаследовано от RC2)
FeedbackSizeValue
Устаревшие..

Представляет размер порции данных обратной связи для криптографической операции (в битах).

(Унаследовано от SymmetricAlgorithm)
IVValue
Устаревшие..

Представляет вектор инициализации (IV) для алгоритма симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
KeySizeValue
Устаревшие..

Представляет размер секретного ключа (в битах), используемого алгоритмом симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
KeyValue
Устаревшие..

Представляет секретный ключ для алгоритма симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
LegalBlockSizesValue
Устаревшие..

Задает размеры блоков (в битах), которые поддерживаются алгоритмом симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
LegalKeySizesValue
Устаревшие..

Задает размеры ключа (в битах), которые поддерживаются алгоритмом симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
ModeValue
Устаревшие..

Представляет режим шифрования, используемый в алгоритме симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
PaddingValue
Устаревшие..

Представляет режим заполнения, используемый в алгоритме симметричного шифрования.

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

Свойства

BlockSize
Устаревшие..

Возвращает или задает размер блока криптографической операции (в битах).

(Унаследовано от SymmetricAlgorithm)
EffectiveKeySize
Устаревшие..

Получает или задает эффективный размер секретного ключа (в битах), используемого алгоритмом RC2.

FeedbackSize
Устаревшие..

Возвращает или задает размер ответа криптографической операции (в битах) для режимов шифрования "Обратная связь по шифру" (CFB) и "Выходная обратная связь" (OFB).

(Унаследовано от SymmetricAlgorithm)
IV
Устаревшие..

Получает или задает вектор инициализации (IV) для алгоритма симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
Key
Устаревшие..

Получает или задает секретный ключ для алгоритма симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
KeySize
Устаревшие..

Получает или задает размер секретного ключа, используемого алгоритмом RC2, в битах.

(Унаследовано от RC2)
LegalBlockSizes
Устаревшие..

Получает размеры блоков (в битах), которые поддерживаются алгоритмом симметричного шифрования.

(Унаследовано от SymmetricAlgorithm)
LegalKeySizes
Устаревшие..

Возвращает размеры ключа (в битах), которые поддерживаются симметричным алгоритмом.

(Унаследовано от SymmetricAlgorithm)
Mode
Устаревшие..

Возвращает или задает режим функционирования симметричного алгоритма.

(Унаследовано от SymmetricAlgorithm)
Padding
Устаревшие..

Возвращает или задает режим заполнения, используемый в симметричном алгоритме.

(Унаследовано от SymmetricAlgorithm)
UseSalt
Устаревшие..

Получает или задает значение, определяющее необходимость создания ключа с привязкой, имеющей длину 11 байтов и нулевое значение.

Методы

Clear()
Устаревшие..

Освобождает все ресурсы, используемые классом SymmetricAlgorithm.

(Унаследовано от SymmetricAlgorithm)
CreateDecryptor()
Устаревшие..

Создает симметричный объект-дешифратор с текущим свойством Key и вектором инициализации (IV).

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

Создает объект-дешифратор для алгоритма симметричного шифрования RC2 с заданным ключом (Key) и вектором инициализации (IV).

CreateEncryptor()
Устаревшие..

Создает симметричный объект-шифратор с текущим свойством Key и вектором инициализации (IV).

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

Создает объект-шифратор для алгоритма симметричного шифрования RC2 с заданным ключом (Key) и вектором инициализации (IV).

DecryptCbc(Byte[], Byte[], PaddingMode)
Устаревшие..

Расшифровывает данные с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
Устаревшие..

Расшифровывает данные с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Устаревшие..

Расшифровывает данные в указанный буфер, используя режим CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)
Устаревшие..

Расшифровывает данные с помощью режима CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
Устаревшие..

Расшифровывает данные с помощью режима CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

Расшифровывает данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
DecryptEcb(Byte[], PaddingMode)
Устаревшие..

Расшифровывает данные с помощью режима ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)
Устаревшие..

Расшифровывает данные с помощью режима ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Устаревшие..

Расшифровывает данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
Dispose()
Устаревшие..

Освобождает все ресурсы, используемые текущим экземпляром класса SymmetricAlgorithm.

(Унаследовано от SymmetricAlgorithm)
Dispose(Boolean)
Устаревшие..

Освобождает неуправляемые ресурсы, используемые объектом SymmetricAlgorithm, а при необходимости освобождает также управляемые ресурсы.

(Унаследовано от SymmetricAlgorithm)
EncryptCbc(Byte[], Byte[], PaddingMode)
Устаревшие..

Шифрует данные с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
Устаревшие..

Шифрует данные с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Устаревшие..

Шифрует данные в указанный буфер, используя режим CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)
Устаревшие..

Шифрует данные с помощью режима CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
Устаревшие..

Шифрует данные с помощью режима CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

Шифрует данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
EncryptEcb(Byte[], PaddingMode)
Устаревшие..

Шифрует данные с помощью режима ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)
Устаревшие..

Шифрует данные с помощью режима ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Устаревшие..

Шифрует данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
Equals(Object)
Устаревшие..

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GenerateIV()
Устаревшие..

Создает случайный вектор инициализации (IV), используемый для данного алгоритма.

GenerateKey()
Устаревшие..

Создает случайный ключ (Key), используемый для данного алгоритма.

GetCiphertextLengthCbc(Int32, PaddingMode)
Устаревшие..

Возвращает длину зашифрованного текста с заданным режимом заполнения и длину открытого текста в режиме CBC.

(Унаследовано от SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)
Устаревшие..

Возвращает длину зашифрованного текста с заданным режимом заполнения и длину открытого текста в режиме CFB.

(Унаследовано от SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)
Устаревшие..

Возвращает длину зашифрованного текста в заданном режиме заполнения и длину открытого текста в режиме ECB.

(Унаследовано от SymmetricAlgorithm)
GetHashCode()
Устаревшие..

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()
Устаревшие..

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

(Унаследовано от Object)
MemberwiseClone()
Устаревшие..

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()
Устаревшие..

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
Устаревшие..

Пытается расшифровать данные в указанный буфер с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

При переопределении в производном классе пытается расшифровать данные в указанный буфер, используя режим CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
Устаревшие..

Пытается расшифровать данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
Устаревшие..

При переопределении в производном классе пытается расшифровать данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

Пытается расшифровать данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

При переопределении в производном классе пытается расшифровать данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
Устаревшие..

Пытается зашифровать данные в указанный буфер с помощью режима CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

При переопределении в производном классе пытается зашифровать данные в указанный буфер, используя режим CBC с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
Устаревшие..

Пытается зашифровать данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
Устаревшие..

При переопределении в производном классе пытается зашифровать данные в указанный буфер, используя режим CFB с указанным режимом заполнения и размером обратной связи.

(Унаследовано от SymmetricAlgorithm)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

Пытается зашифровать данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Устаревшие..

При переопределении в производном классе пытается зашифровать данные в указанный буфер, используя режим ECB с указанным режимом заполнения.

(Унаследовано от SymmetricAlgorithm)
ValidKeySize(Int32)
Устаревшие..

Определяет, является ли заданный размер ключа допустимым для текущего алгоритма.

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

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

IDisposable.Dispose()

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

Устаревшие..

Освобождает неуправляемые ресурсы, используемые объектом SymmetricAlgorithm, а при необходимости освобождает также управляемые ресурсы.

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

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

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