RSACryptoServiceProvider.Encrypt Methode

Definitie

Hiermee worden gegevens versleuteld met het RSA algoritme.

Overloads

Name Description
Encrypt(Byte[], Boolean)

Hiermee worden gegevens versleuteld met het RSA algoritme.

Encrypt(Byte[], RSAEncryptionPadding)

Versleutelt gegevens met het RSA algoritme met behulp van de opgegeven opvulling.

Encrypt(Byte[], Boolean)

Hiermee worden gegevens versleuteld met het RSA algoritme.

public:
 cli::array <System::Byte> ^ Encrypt(cli::array <System::Byte> ^ rgb, bool fOAEP);
public byte[] Encrypt(byte[] rgb, bool fOAEP);
member this.Encrypt : byte[] * bool -> byte[]
override this.Encrypt : byte[] * bool -> byte[]
Public Function Encrypt (rgb As Byte(), fOAEP As Boolean) As Byte()

Parameters

rgb
Byte[]

De gegevens die moeten worden versleuteld.

fOAEP
Boolean

true om directe RSA versleuteling uit te voeren met behulp van OAEP-opvulling (alleen beschikbaar op een computer met Windows XP of hoger); anders false om PKCS#1 v1.5 opvulling te gebruiken.

Retouren

Byte[]

De versleutelde gegevens.

Uitzonderingen

De cryptografische serviceprovider (CSP) kan niet worden verkregen.

– of –

De lengte van de rgb parameter is groter dan de maximaal toegestane lengte.

rgb is null.

Voorbeelden

In het volgende codevoorbeeld wordt een RSACryptoServiceProvider object geïnitialiseerd op de waarde van een openbare sleutel (verzonden door een andere partij), wordt een sessiesleutel gegenereerd met behulp van het Aes algoritme en wordt de sessiesleutel vervolgens versleuteld met behulp van het RSACryptoServiceProvider object. Met dit schema kan de sessiesleutel worden teruggestuurd naar de eigenaar van de persoonlijke RSA-sleutel en kunnen de twee partijen de sessiesleutel gebruiken om versleutelde gegevens uit te wisselen.

using System;
using System.Security.Cryptography;

class RSACSPSample
{

    static void Main()
    {
        try
        {		//initialze the byte arrays to the public key information.
            byte[] PublicKey = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,
                                   74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,
                                   207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,
                                   108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,
                                   240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,
                                   168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,
                                   38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,
                                   106,99,179,68,175,211,164,116,64,148,226,254,172,147};

            byte[] Exponent = {1,0,1};
      
            //Values to store encrypted symmetric keys.
            byte[] EncryptedSymmetricKey;
            byte[] EncryptedSymmetricIV;

            //Create a new instance of RSACryptoServiceProvider.
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

            //Create a new instance of RSAParameters.
            RSAParameters RSAKeyInfo = new RSAParameters();

            //Set RSAKeyInfo to the public key values. 
            RSAKeyInfo.Modulus = PublicKey;
            RSAKeyInfo.Exponent = Exponent;

            //Import key parameters into RSA.
            RSA.ImportParameters(RSAKeyInfo);

            //Create a new instance of the Aes class.
            Aes aes = Aes.Create();

            //Encrypt the symmetric key and IV.
            EncryptedSymmetricKey = RSA.Encrypt(aes.Key, false);
            EncryptedSymmetricIV = RSA.Encrypt(aes.IV, false);

            Console.WriteLine("Aes Key and IV have been encrypted with RSACryptoServiceProvider."); 
        }
        //Catch and display a CryptographicException  
        //to the console.
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
Imports System.Security.Cryptography

Class RSACSPSample

    Shared Sub Main()
        Try
            'initialze the byte arrays to the public key information.
            Dim PublicKey As Byte() = {214, 46, 220, 83, 160, 73, 40, 39, 201, 155, 19, 202, 3, 11, 191, 178, 56, 74, 90, 36, 248, 103, 18, 144, 170, 163, 145, 87, 54, 61, 34, 220, 222, 207, 137, 149, 173, 14, 92, 120, 206, 222, 158, 28, 40, 24, 30, 16, 175, 108, 128, 35, 230, 118, 40, 121, 113, 125, 216, 130, 11, 24, 90, 48, 194, 240, 105, 44, 76, 34, 57, 249, 228, 125, 80, 38, 9, 136, 29, 117, 207, 139, 168, 181, 85, 137, 126, 10, 126, 242, 120, 247, 121, 8, 100, 12, 201, 171, 38, 226, 193, 180, 190, 117, 177, 87, 143, 242, 213, 11, 44, 180, 113, 93, 106, 99, 179, 68, 175, 211, 164, 116, 64, 148, 226, 254, 172, 147}

            Dim Exponent As Byte() = {1, 0, 1}

            'Values to store encrypted symmetric keys.
            Dim EncryptedSymmetricKey() As Byte
            Dim EncryptedSymmetricIV() As Byte

            'Create a new instance of RSACryptoServiceProvider.
            Dim RSA As New RSACryptoServiceProvider()

            'Create a new instance of RSAParameters.
            Dim RSAKeyInfo As New RSAParameters()

            'Set RSAKeyInfo to the public key values. 
            RSAKeyInfo.Modulus = PublicKey
            RSAKeyInfo.Exponent = Exponent

            'Import key parameters into RSA.
            RSA.ImportParameters(RSAKeyInfo)

            'Create a new instance of the Aes class.
            Dim aes As Aes = Aes.Create()

            'Encrypt the symmetric key and IV.
            EncryptedSymmetricKey = RSA.Encrypt(aes.Key, False)
            EncryptedSymmetricIV = RSA.Encrypt(aes.IV, False)

            Console.WriteLine("Aes Key and IV have been encrypted with RSA.")

            'Catch and display a CryptographicException  
            'to the console.
        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try
    End Sub
End Class

Opmerkingen

In de volgende tabel wordt de opvulling beschreven die wordt ondersteund door verschillende versies van Microsoft Windows en de maximale lengte van rgb die zijn toegestaan door de verschillende combinaties van besturingssystemen en opvulling.

Opvulling Maximale lengte van rgb-parameter
OAEP-opvulling (PKCS#1 v2) Modulusgrootte -2 -2*hLen, waarbij hLen de grootte van de hash is.
Directe versleuteling (PKCS#1 v1.5) Modulus grootte - 11. (11 bytes is de minimale opvulling mogelijk.)

Gebruik Decrypt deze methode om de resultaten van deze methode te ontsleutelen.

Zie ook

Van toepassing op

Encrypt(Byte[], RSAEncryptionPadding)

Versleutelt gegevens met het RSA algoritme met behulp van de opgegeven opvulling.

public:
 override cli::array <System::Byte> ^ Encrypt(cli::array <System::Byte> ^ data, System::Security::Cryptography::RSAEncryptionPadding ^ padding);
public override byte[] Encrypt(byte[] data, System.Security.Cryptography.RSAEncryptionPadding padding);
override this.Encrypt : byte[] * System.Security.Cryptography.RSAEncryptionPadding -> byte[]
Public Overrides Function Encrypt (data As Byte(), padding As RSAEncryptionPadding) As Byte()

Parameters

data
Byte[]

De gegevens die moeten worden versleuteld.

padding
RSAEncryptionPadding

De opvulling.

Retouren

Byte[]

De versleutelde gegevens.

Uitzonderingen

data is null.

– of –

padding is null.

De opvullingsmodus wordt niet ondersteund.

Opmerkingen

padding moet of RSAEncryptionPadding.Pkcs1 of RSAEncryptionPadding.OaepSHA1 zijn.

Van toepassing op