共用方式為


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 物件不會使用 salt。

注意

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

方法

Clear()
已淘汰.

釋放 SymmetricAlgorithm 類別所使用的所有資源。

(繼承來源 SymmetricAlgorithm)
CreateDecryptor()
已淘汰.

使用目前的 Key 屬性和初始化向量 (IV),建立對稱解密子物件。

(繼承來源 SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])
已淘汰.

使用指定的金鑰 (Key) 和初始化向量 (IV),建立對稱 RC2 解密子物件。

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 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 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 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 SymmetricAlgorithm)

適用於

另請參閱