RSACryptoServiceProvider.Encrypt Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Szyfruje dane za pomocą algorytmu RSA .
Przeciążenia
| Nazwa | Opis |
|---|---|
| Encrypt(Byte[], Boolean) |
Przestarzałe.
Szyfruje dane za pomocą algorytmu RSA . |
| Encrypt(Byte[], RSAEncryptionPadding) |
Szyfruje dane za pomocą algorytmu RSA przy użyciu określonego wypełnienia. |
Encrypt(Byte[], Boolean)
Uwaga
RSACryptoServiceProvider.Encrypt and RSACryptoServiceProvider.Decrypt methods that take a Boolean are obsolete. Use the overload that accepts RSAEncryptionPadding instead.
Szyfruje dane za pomocą algorytmu 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()
Parametry
- rgb
- Byte[]
Dane do zaszyfrowania.
- fOAEP
- Boolean
true do wykonywania bezpośrednich RSA szyfrowania przy użyciu dopełnienia OAEP (dostępne tylko na komputerze z systemem Windows XP lub nowszym); w przeciwnym razie false do korzystania z dopełnienia PKCS#1 w wersji 1.5.
Zwraca
Zaszyfrowane dane.
- Atrybuty
Wyjątki
Nie można uzyskać dostawcy usług kryptograficznych (CSP).
— lub —
Długość parametru rgb jest większa niż maksymalna dozwolona długość.
Parametr rgb ma wartość null.
Przykłady
Poniższy przykład kodu inicjuje RSACryptoServiceProvider obiekt do wartości klucza publicznego (wysyłanego przez inną firmę), generuje klucz sesji przy użyciu algorytmu Aes , a następnie szyfruje klucz sesji przy użyciu RSACryptoServiceProvider obiektu . Korzystając z tego schematu, klucz sesji można wysłać z powrotem do właściciela prywatnego klucza RSA, a obie strony mogą użyć klucza sesji do wymiany zaszyfrowanych danych.
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
Uwagi
W poniższej tabeli opisano dopełnienie obsługiwane przez różne wersje Microsoft Windows i maksymalną długość rgb dozwolone przez różne kombinacje systemów operacyjnych i dopełnienie.
| Dopełnienie | Maksymalna długość parametru rgb |
|---|---|
| Wypełnienie OAEP (PKCS#1 v2) | Rozmiar modulu -2 -2*hLen, gdzie hLen jest rozmiarem skrótu. |
| Szyfrowanie bezpośrednie (PKCS#1 w wersji 1.5) | Rozmiar modulo - 11. (11 bajtów jest minimalną możliwą dopełnienie). |
Użyj Decrypt polecenia , aby odszyfrować wyniki tej metody.
Zobacz też
Dotyczy
Encrypt(Byte[], RSAEncryptionPadding)
Szyfruje dane za pomocą algorytmu RSA przy użyciu określonego wypełnienia.
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[]
Dane do zaszyfrowania.
- padding
- RSAEncryptionPadding
Dopełnienie.
Zwraca
Zaszyfrowane dane.
Wyjątki
Tryb dopełnienia nie jest obsługiwany.
Uwagi
padding musi mieć wartość RSAEncryptionPadding.Pkcs1 lub RSAEncryptionPadding.OaepSHA1.