Sdílet prostřednictvím


RSACryptoServiceProvider.Encrypt Metoda

Definice

Šifruje data pomocí RSA algoritmu.

Přetížení

Encrypt(Byte[], Boolean)

Šifruje data pomocí RSA algoritmu.

Encrypt(Byte[], RSAEncryptionPadding)

Šifruje data pomocí RSA algoritmu pomocí zadaného odsazení.

Encrypt(Byte[], Boolean)

Zdroj:
RSACryptoServiceProvider.Unix.cs
Zdroj:
RSACryptoServiceProvider.Unix.cs
Zdroj:
RSACryptoServiceProvider.Unix.cs

Šifruje data pomocí RSA algoritmu.

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

Parametry

rgb
Byte[]

Data, která se mají šifrovat.

fOAEP
Boolean

true k provedení přímého RSA šifrování pomocí odsazení OAEP (k dispozici pouze v počítači se systémem Windows XP nebo novějším), jinak false chcete použít odsazení PKCS#1 v1.5.

Návraty

Byte[]

Šifrovaná data.

Výjimky

Zprostředkovatele kryptografických služeb (CSP) nelze získat.

-nebo-

Délka parametru rgb je větší než maximální povolená délka.

rgb je null.

Příklady

Následující příklad kódu inicializuje RSACryptoServiceProvider objekt na hodnotu veřejného klíče (odeslaného jinou stranou), vygeneruje klíč relace pomocí Aes algoritmu a poté zašifruje klíč relace pomocí objektu RSACryptoServiceProvider . Pomocí tohoto schématu by se klíč relace mohl odeslat zpět vlastníkovi privátního klíče RSA a obě strany by ho mohly použít k výměně šifrovaných dat.

#using <System.dll>

using namespace System;
using namespace System::Security::Cryptography;
int main()
{
   try
   {
      
      //initialze the Byte arrays to the public key information.
      array<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};
      array<Byte>^Exponent = {1,0,1};
      
      //Values to store encrypted symmetric keys.
      array<Byte>^EncryptedSymmetricKey;
      array<Byte>^EncryptedSymmetricIV;
      
      //Create a new instance of RSACryptoServiceProvider.
      RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider;
      
      //Create a new instance of RSAParameters.
      RSAParameters RSAKeyInfo;
      
      //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 ( CryptographicException^ e ) 
   {
      
      //Catch and display a CryptographicException  
      //to the console.
      Console::WriteLine( e->Message );
   }

}
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

Poznámky

Následující tabulka popisuje odsazení podporované různými verzemi Systému Microsoft Windows a maximální délku rgb povolenou různými kombinacemi operačních systémů a odsazení.

Odsazení Maximální délka parametru rgb
Odsazení OAEP (PKCS#1 v2) Velikost modulus -2 -2*hLen, kde hLen je velikost hodnoty hash.
Přímé šifrování (PKCS#1 v1.5) Velikost modulusu - 11. (11 bajtů je minimální možné odsazení.)

Slouží Decrypt k dešifrování výsledků této metody.

Viz také

Platí pro

Encrypt(Byte[], RSAEncryptionPadding)

Zdroj:
RSACryptoServiceProvider.Unix.cs
Zdroj:
RSACryptoServiceProvider.Unix.cs
Zdroj:
RSACryptoServiceProvider.Unix.cs

Šifruje data pomocí RSA algoritmu pomocí zadaného odsazení.

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

Parametry

data
Byte[]

Data, která se mají šifrovat.

padding
RSAEncryptionPadding

Odsazení.

Návraty

Byte[]

Šifrovaná data.

Výjimky

data je null.

-nebo-

padding je null.

Režim odsazení není podporován.

Poznámky

padding musí být buď , RSAEncryptionPadding.Pkcs1 nebo RSAEncryptionPadding.OaepSHA1.

Platí pro