RC2CryptoServiceProvider Класс

Определение

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

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
Атрибуты

Примеры

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

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 объект не использует соль.

Note

Доступен более новый алгоритм симметричного шифрования , расширенный стандарт шифрования (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).

Dispose()

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

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

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

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

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

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

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

GenerateKey()

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

GetHashCode()

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

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

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

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

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

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

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

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

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

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

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

Имя Описание
IDisposable.Dispose()

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

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

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

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

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