RSACryptoServiceProvider.Encrypt メソッド

定義

RSA アルゴリズムでデータを暗号化します。Encrypts data with the RSA algorithm.

オーバーロード

Encrypt(Byte[], Boolean)

RSA アルゴリズムでデータを暗号化します。Encrypts data with the RSA algorithm.

Encrypt(Byte[], RSAEncryptionPadding)

指定されたパディングを使用した RSA アルゴリズムでデータを暗号化します。Encrypts data with the RSA algorithm using the specified padding.

Encrypt(Byte[], Boolean)

RSA アルゴリズムでデータを暗号化します。Encrypts data with the RSA algorithm.

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[]
Public Function Encrypt (rgb As Byte(), fOAEP As Boolean) As Byte()

パラメーター

rgb
Byte[]

暗号化するデータ。The data to be encrypted.

fOAEP
Boolean

OAEP パディング (Windows XP 以降を実行しているコンピューターでのみ使用可能) を使用して、直接 RSA を暗号化する場合は true。それ以外の場合で、PKCS#1 v1.5 パディングを使用するには falsetrue to perform direct RSA encryption using OAEP padding (only available on a computer running Windows XP or later); otherwise, false to use PKCS#1 v1.5 padding.

戻り値

Byte[]

暗号化するデータ。The encrypted data.

例外

暗号化サービス プロバイダー (CSP) を取得できません。The cryptographic service provider (CSP) cannot be acquired.

または-or- rgb パラメーターの長さが、許容最大長を超えています。The length of the rgb parameter is greater than the maximum allowed length.

- または --or- fOAEP パラメーターが true であり、OAEP がサポートされていません。The fOAEP parameter is true and OAEP padding is not supported.

rgbnull です。rgb is null.

次のコード例ではRSACryptoServiceProvider 、(別のパーティによって送信される) 公開キーの値にオブジェクトを初期化しRijndaelManaged 、アルゴリズムを使用してセッションキーを生成RSACryptoServiceProviderした後、オブジェクトを使用してセッションキーを暗号化します。The following code example initializes an RSACryptoServiceProvider object to the value of a public key (sent by another party), generates a session key using the RijndaelManaged algorithm, and then encrypts the session key using the RSACryptoServiceProvider object. このスキームを使用して、セッションキーを秘密の RSA キーの所有者に送り返すことができます。また、この2つの当事者は、セッションキーを使用して暗号化されたデータを交換できます。Using this scheme, the session key could be sent back to the owner of the private RSA key and the two parties could use the session key to exchange encrypted data.

#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 RijndaelManaged class.
      RijndaelManaged^ RM = gcnew RijndaelManaged;
      
      //Encrypt the symmetric key and IV.
      EncryptedSymmetricKey = RSA->Encrypt( RM->Key, false );
      EncryptedSymmetricIV = RSA->Encrypt( RM->IV, false );
      Console::WriteLine( "RijndaelManaged 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 RijndaelManaged class.
            RijndaelManaged RM = new RijndaelManaged();

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

            Console.WriteLine("RijndaelManaged 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 RijndaelManaged class.
            Dim RM As New RijndaelManaged()

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

            Console.WriteLine("RijndaelManaged Key and IV have been encrypted with RSACryptoServiceProvider.")

            '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 、オペレーティングシステムと埋め込みのさまざまな組み合わせで許容される最大長について説明します。The following table describes the padding supported by different versions of Microsoft Windows and the maximum length of rgb allowed by the different combinations of operating systems and padding.

[間隔]Padding サポートされているオペレーティングシステムOperating System Supported Rgb パラメーターの最大長Maximum Length of rgb Parameter
OAEP padding (PKCS # 1 v2)OAEP padding (PKCS#1 v2) Windows XP 以降。Windows XP or later. 剰余サイズ-2-2 * hLen (hLen はハッシュのサイズ)。Modulus size -2 -2*hLen, where hLen is the size of the hash.
直接暗号化 (PKCS # 1 v 1.5)Direct Encryption (PKCS#1 v1.5) Microsoft Windows 2000 以降 (高暗号化パックがインストールされている)。Microsoft Windows 2000 or later with the high encryption pack installed. 剰余サイズ-11。Modulus size - 11. (11 バイトは、可能な最小の埋め込みです)。(11 bytes is the minimum padding possible.)
Direct Encryption と OAEP padding はサポートされていませんDirect Encryption and OAEP padding not supported Microsoft Windows 98、Windows Millennium Edition、または Windows 2000 以降 (高暗号化パックがインストールされていない場合)。Microsoft Windows 98, Windows Millennium Edition, or Windows 2000 or later without the high encryption pack installed. 対称キーに許可される最大サイズ。The maximum size allowed for a symmetric key.

このDecryptメソッドの結果の暗号化を解除するには、を使用します。Use Decrypt to decrypt the results of this method.

こちらもご覧ください

Encrypt(Byte[], RSAEncryptionPadding)

指定されたパディングを使用した RSA アルゴリズムでデータを暗号化します。Encrypts data with the RSA algorithm using the specified padding.

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[]

暗号化するデータ。The data to encrypt.

padding
RSAEncryptionPadding

パディング。The padding.

戻り値

Byte[]

暗号化するデータ。The encrypted data.

例外

datanullです。data is null.

- または --or- paddingnull です。padding is null.

そのパディング モードはサポートされていません。The padding mode is not supported.

注釈

paddingまたはRSAEncryptionPadding.Pkcs1 RSAEncryptionPadding.OaepSHA1のいずれかである必要があります。padding must be either RSAEncryptionPadding.Pkcs1 or RSAEncryptionPadding.OaepSHA1.

適用対象