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
- Наследование
- Атрибуты
Примеры
Следующий пример кода шифрует и расшифровывает строку.
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) |