RC2CryptoServiceProvider 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
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
- 繼承
- 屬性
範例
下列程式代碼範例會加密並解密字串。
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 的金鑰。 |
方法
明確介面實作
IDisposable.Dispose() |
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。
已淘汰.
釋放 SymmetricAlgorithm 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。 (繼承來源 SymmetricAlgorithm) |