RSACryptoServiceProvider.Encrypt Metod

Definition

Krypterar data med algoritmen RSA .

Överlagringar

Name Description
Encrypt(Byte[], Boolean)
Föråldrad.

Krypterar data med algoritmen RSA .

Encrypt(Byte[], RSAEncryptionPadding)

Krypterar data med algoritmen RSA med den angivna utfyllnaden.

Encrypt(Byte[], Boolean)

Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs

Varning

RSACryptoServiceProvider.Encrypt and RSACryptoServiceProvider.Decrypt methods that take a Boolean are obsolete. Use the overload that accepts RSAEncryptionPadding instead.

Krypterar data med algoritmen RSA .

public:
 cli::array <System::Byte> ^ Encrypt(cli::array <System::Byte> ^ rgb, bool fOAEP);
public byte[] Encrypt(byte[] rgb, bool fOAEP);
[System.Obsolete("RSACryptoServiceProvider.Encrypt and RSACryptoServiceProvider.Decrypt methods that take a Boolean are obsolete. Use the overload that accepts RSAEncryptionPadding instead.", DiagnosticId="SYSLIB0064", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] Encrypt(byte[] rgb, bool fOAEP);
override this.Encrypt : byte[] * bool -> byte[]
[<System.Obsolete("RSACryptoServiceProvider.Encrypt and RSACryptoServiceProvider.Decrypt methods that take a Boolean are obsolete. Use the overload that accepts RSAEncryptionPadding instead.", DiagnosticId="SYSLIB0064", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Encrypt : byte[] * bool -> byte[]
member this.Encrypt : byte[] * bool -> byte[]
Public Function Encrypt (rgb As Byte(), fOAEP As Boolean) As Byte()

Parametrar

rgb
Byte[]

De data som ska krypteras.

fOAEP
Boolean

true att utföra direkt RSA kryptering med OAEP-utfyllnad (endast tillgängligt på en dator som kör Windows XP eller senare), annars false för att använda PKCS#1 v1.5-utfyllnad.

Returer

Byte[]

Krypterade data.

Attribut

Undantag

Det går inte att hämta den kryptografiska tjänstleverantören (CSP).

-eller-

Parameterns rgb längd är större än den maximala tillåtna längden.

rgb är null.

Exempel

I följande kodexempel initieras ett RSACryptoServiceProvider objekt till värdet för en offentlig nyckel (skickad av en annan part), genererar en sessionsnyckel med hjälp av algoritmen Aes och krypterar sedan sessionsnyckeln med hjälp av RSACryptoServiceProvider objektet. Med det här schemat kan sessionsnyckeln skickas tillbaka till ägaren av den privata RSA-nyckeln och de två parterna kan använda sessionsnyckeln för att utbyta krypterade data.

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

Kommentarer

I följande tabell beskrivs utfyllnad som stöds av olika versioner av Microsoft Windows och den maximala längden på rgb som tillåts av de olika kombinationerna av operativsystem och utfyllnad.

Utfyllnad Maximal längd på rgb-parameter
OAEP-utfyllnad (PKCS#1 v2) Modulus storlek -2 -2*hLen, där hLen är storleken på hashen.
Direktkryptering (PKCS#1 v1.5) Modulus storlek - 11. (11 byte är minsta möjliga utfyllnad.)

Använd Decrypt för att dekryptera resultatet av den här metoden.

Se även

Gäller för

Encrypt(Byte[], RSAEncryptionPadding)

Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs
Källa:
RSACryptoServiceProvider.Unix.cs

Krypterar data med algoritmen RSA med den angivna utfyllnaden.

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()

Parametrar

data
Byte[]

Data som ska krypteras.

padding
RSAEncryptionPadding

Utfyllnad.

Returer

Byte[]

Krypterade data.

Undantag

data är null.

-eller-

padding är null.

Utfyllnadsläget stöds inte.

Kommentarer

padding måste vara antingen RSAEncryptionPadding.Pkcs1 eller RSAEncryptionPadding.OaepSHA1.

Gäller för