RSACryptoServiceProvider.Encrypt 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
RSA 알고리즘으로 데이터를 암호화합니다.
오버로드
Encrypt(Byte[], Boolean) |
RSA 알고리즘으로 데이터를 암호화합니다. |
Encrypt(Byte[], RSAEncryptionPadding) |
지정된 패딩을 사용하여 RSA 알고리즘으로 데이터를 암호화합니다. |
Encrypt(Byte[], Boolean)
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
OAEP 안쪽 여백(Windows XP 이상을 실행하는 컴퓨터에서만 사용 가능)을 사용하여 직접 RSA 암호화를 수행하려면 true
이고, PKCS#1 v1.5 안쪽 여백을 사용하려면 false
입니다.
반환
암호화된 데이터입니다.
예외
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 v2) | 모듈러스 크기 -2 -2*hLen, 여기서 hLen은 해시의 크기입니다. |
직접 암호화(PKCS#1 v1.5) | 모듈러스 크기 - 11. 가능한 최소 패딩은 11바이트입니다. |
를 사용하여 Decrypt 이 메서드의 결과를 해독합니다.
추가 정보
적용 대상
Encrypt(Byte[], RSAEncryptionPadding)
지정된 패딩을 사용하여 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
패딩입니다.
반환
암호화된 데이터입니다.
예외
패딩 모드가 지원되지 않는 경우
설명
padding
은 또는 RSAEncryptionPadding.OaepSHA1이어야 RSAEncryptionPadding.Pkcs1 합니다.
적용 대상
.NET