Поделиться через


RSACryptoServiceProvider.Encrypt Метод

Определение

Зашифровывает данные с помощью алгоритма RSA.

Перегрузки

Encrypt(Byte[], Boolean)

Зашифровывает данные с помощью алгоритма RSA.

Encrypt(Byte[], RSAEncryptionPadding)

Шифрует данные с помощью алгоритма RSA с использованием указанного заполнения.

Encrypt(Byte[], Boolean)

Исходный код:
RSACryptoServiceProvider.Unix.cs
Исходный код:
RSACryptoServiceProvider.Unix.cs
Исходный код:
RSACryptoServiceProvider.Unix.cs

Зашифровывает данные с помощью алгоритма RSA.

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

Параметры

rgb
Byte[]

Данные, предназначенные для шифрования.

fOAEP
Boolean

true для выполнения прямой расшифровки RSA с помощью заполнения OAEP (доступно только на компьютере под управлением Windows XP или более поздних версий). В противном случае — false для использования заполнения PKCS #1 v1.5.

Возвращаемое значение

Byte[]

Зашифрованные данные.

Исключения

Не удалось получить поставщик служб шифрования (CSP).

-или-

Длина параметра rgb превышает максимально допустимую длину.

rgb имеет значение null.

Примеры

В следующем примере кода объект инициализируется RSACryptoServiceProvider значением открытого ключа (отправленного другой стороной), создается ключ сеанса с помощью алгоритма Aes , а затем ключ сеанса шифруется с помощью RSACryptoServiceProvider объекта . С помощью этой схемы ключ сеанса может быть отправлен владельцу закрытого ключа RSA, а обе стороны могут использовать его для обмена зашифрованными данными.

#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

Комментарии

В следующей таблице описаны отбивки, поддерживаемые различными версиями Microsoft Windows, и максимальная длина, разрешенная rgb различными сочетаниями операционных систем и заполнения.

Заполнение Максимальная длина параметра rgb
Заполнение OAEP (PKCS#1 версии 2) Размер модуля -2 -2*hLen, где hLen — это размер хэша.
Прямое шифрование (PKCS#1 версии 1.5) Размер модуля — 11. (11 байт — это минимально возможное заполнение.)

Используйте Decrypt для расшифровки результатов этого метода.

См. также раздел

Применяется к

Encrypt(Byte[], RSAEncryptionPadding)

Исходный код:
RSACryptoServiceProvider.Unix.cs
Исходный код:
RSACryptoServiceProvider.Unix.cs
Исходный код:
RSACryptoServiceProvider.Unix.cs

Шифрует данные с помощью алгоритма RSA с использованием указанного заполнения.

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

Параметры

data
Byte[]

Данные, которые необходимо зашифровать.

padding
RSAEncryptionPadding

Заполнение.

Возвращаемое значение

Byte[]

Зашифрованные данные.

Исключения

data имеет значение null.

-или-

padding имеет значение null.

Этот режим заполнения не поддерживается.

Комментарии

padding должен иметь значение RSAEncryptionPadding.Pkcs1 или RSAEncryptionPadding.OaepSHA1.

Применяется к