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 實作為以8位遞增的方式支援從40位到128位的金鑰長度。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.

注意

有先進加密標準 (Advanced Encryption Standard,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 位元組長、零值 Salt 的金鑰。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[])

使用指定的金鑰 (Key) 和初始化向量 (IV),建立對稱 RC2 解密子物件。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 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。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()

取得目前執行個體的 TypeGets 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 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

(繼承來源 SymmetricAlgorithm)

適用於

另請參閱