RC2CryptoServiceProvider Klass

Definition

Definierar ett omslutningsobjekt för åtkomst till csp-implementeringen (cryptographic service provider) för algoritmen RC2 . Det går inte att ärva den här klassen.

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
Arv
RC2CryptoServiceProvider
Attribut

Exempel

Följande kodexempel krypterar och dekrypterar sedan en sträng.

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

Kommentarer

Implementeringen RC2CryptoServiceProvider stöder nyckellängder från 40 bitar till 128 bitar i steg om 8 bitar.

Objektet RC2CryptoServiceProvider är ett blockkryptering som krypterar och dekrypterar data i block om 8 byte. Den här klassen blockerar det sista datablocket om det är mindre än 8 byte. Som ett resultat av den här utfyllnaden kan längden på krypterade data vara större än den ursprungliga klartexten.

Observera att objektet RC2CryptoServiceProvider inte använder salt.

Note

En nyare symmetrisk krypteringsalgoritm, Advanced Encryption Standard (AES), är tillgänglig. Överväg att använda algoritmen Aes och dess härledda klasser i stället för RC2CryptoServiceProvider klassen. Använd RC2CryptoServiceProvider endast för kompatibilitet med äldre program och data.

Konstruktorer

Name Description
RC2CryptoServiceProvider()

Initierar en ny instans av RC2CryptoServiceProvider klassen.

Fält

Name Description
BlockSizeValue

Representerar blockstorleken i bitar för den kryptografiska åtgärden.

(Ärvd från SymmetricAlgorithm)
EffectiveKeySizeValue

Representerar den effektiva storleken på den hemliga nyckel som används av algoritmen RC2 i bitar.

(Ärvd från RC2)
FeedbackSizeValue

Representerar feedbackstorleken i bitar för den kryptografiska åtgärden.

(Ärvd från SymmetricAlgorithm)
IVValue

Representerar initieringsvektorn (IV) för den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
KeySizeValue

Representerar storleken, i bitar, på den hemliga nyckel som används av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
KeyValue

Representerar den hemliga nyckeln för den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
LegalBlockSizesValue

Anger de blockstorlekar i bitar som stöds av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
LegalKeySizesValue

Anger de nyckelstorlekar i bitar som stöds av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
ModeValue

Representerar chifferläget som används i den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
PaddingValue

Representerar utfyllnadsläget som används i den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)

Egenskaper

Name Description
BlockSize

Hämtar eller anger blockstorleken i bitar för den kryptografiska åtgärden.

(Ärvd från SymmetricAlgorithm)
EffectiveKeySize

Hämtar eller anger den effektiva storleken, i bitar, på den hemliga nyckel som används av algoritmen RC2 .

FeedbackSize

Hämtar eller anger feedbackstorleken i bitar för krypteringsåtgärden för chifferfeedback (CFB) och UTdatafeedback (OFB).

(Ärvd från SymmetricAlgorithm)
IV

Hämtar eller anger initieringsvektorn (IV) för den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
Key

Hämtar eller anger den hemliga nyckeln för den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
KeySize

Hämtar eller anger storleken på den hemliga nyckel som används av algoritmen RC2 i bitar.

(Ärvd från RC2)
LegalBlockSizes

Hämtar blockstorlekarna i bitar som stöds av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
LegalKeySizes

Hämtar de nyckelstorlekar, i bitar, som stöds av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
Mode

Hämtar eller anger läget för drift av den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
Padding

Hämtar eller anger utfyllnadsläget som används i den symmetriska algoritmen.

(Ärvd från SymmetricAlgorithm)
UseSalt

Hämtar eller anger ett värde som avgör om du vill skapa en nyckel med ett 11 byte långt, nollvärdessalt.

Metoder

Name Description
Clear()

Släpper alla resurser som används av SymmetricAlgorithm klassen.

(Ärvd från SymmetricAlgorithm)
CreateDecryptor()

Skapar ett symmetriskt dekrypteringsobjekt med den aktuella Key egenskapen och initieringsvektorn (IV).

(Ärvd från SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

Skapar ett symmetriskt RC2 dekrypteringsobjekt med den angivna nyckeln (Key) och initieringsvektorn (IV).

CreateEncryptor()

Skapar ett symmetriskt krypteringsobjekt med den aktuella Key egenskapen och initieringsvektorn (IV).

(Ärvd från SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

Skapar ett symmetriskt RC2 krypteringsobjekt med den angivna nyckeln (Key) och initieringsvektorn (IV).

Dispose()

Släpper alla resurser som används av den aktuella instansen SymmetricAlgorithm av klassen.

(Ärvd från SymmetricAlgorithm)
Dispose(Boolean)

Släpper de ohanterade resurser som används av SymmetricAlgorithm och släpper eventuellt de hanterade resurserna.

(Ärvd från SymmetricAlgorithm)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GenerateIV()

Genererar en slumpmässig initieringsvektor (IV) som ska användas för algoritmen.

GenerateKey()

Genererar en slumpmässig nyckel (Key) som ska användas för algoritmen.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
ValidKeySize(Int32)

Avgör om den angivna nyckelstorleken är giltig för den aktuella algoritmen.

(Ärvd från SymmetricAlgorithm)

Explicita gränssnittsimplementeringar

Name Description
IDisposable.Dispose()

Detta API stöder produktinfrastrukturen och är inte avsett att användas direkt från koden.

Släpper de ohanterade resurser som används av SymmetricAlgorithm och släpper eventuellt de hanterade resurserna.

(Ärvd från SymmetricAlgorithm)

Gäller för

Se även