RSACryptoServiceProvider.Encrypt Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden gegevens versleuteld met het RSA algoritme.
Overloads
| Name | Description |
|---|---|
| Encrypt(Byte[], Boolean) |
Hiermee worden gegevens versleuteld met het RSA algoritme. |
| Encrypt(Byte[], RSAEncryptionPadding) |
Versleutelt gegevens met het RSA algoritme met behulp van de opgegeven opvulling. |
Encrypt(Byte[], Boolean)
Hiermee worden gegevens versleuteld met het RSA algoritme.
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[]
override this.Encrypt : byte[] * bool -> byte[]
Public Function Encrypt (rgb As Byte(), fOAEP As Boolean) As Byte()
Parameters
- rgb
- Byte[]
De gegevens die moeten worden versleuteld.
- fOAEP
- Boolean
true om directe RSA versleuteling uit te voeren met behulp van OAEP-opvulling (alleen beschikbaar op een computer met Windows XP of hoger); anders false om PKCS#1 v1.5 opvulling te gebruiken.
Retouren
De versleutelde gegevens.
Uitzonderingen
De cryptografische serviceprovider (CSP) kan niet worden verkregen.
– of –
De lengte van de rgb parameter is groter dan de maximaal toegestane lengte.
rgb is null.
Voorbeelden
In het volgende codevoorbeeld wordt een RSACryptoServiceProvider object geïnitialiseerd op de waarde van een openbare sleutel (verzonden door een andere partij), wordt een sessiesleutel gegenereerd met behulp van het Aes algoritme en wordt de sessiesleutel vervolgens versleuteld met behulp van het RSACryptoServiceProvider object. Met dit schema kan de sessiesleutel worden teruggestuurd naar de eigenaar van de persoonlijke RSA-sleutel en kunnen de twee partijen de sessiesleutel gebruiken om versleutelde gegevens uit te wisselen.
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
Opmerkingen
In de volgende tabel wordt de opvulling beschreven die wordt ondersteund door verschillende versies van Microsoft Windows en de maximale lengte van rgb die zijn toegestaan door de verschillende combinaties van besturingssystemen en opvulling.
| Opvulling | Maximale lengte van rgb-parameter |
|---|---|
| OAEP-opvulling (PKCS#1 v2) | Modulusgrootte -2 -2*hLen, waarbij hLen de grootte van de hash is. |
| Directe versleuteling (PKCS#1 v1.5) | Modulus grootte - 11. (11 bytes is de minimale opvulling mogelijk.) |
Gebruik Decrypt deze methode om de resultaten van deze methode te ontsleutelen.
Zie ook
Van toepassing op
Encrypt(Byte[], RSAEncryptionPadding)
Versleutelt gegevens met het RSA algoritme met behulp van de opgegeven opvulling.
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()
Parameters
- data
- Byte[]
De gegevens die moeten worden versleuteld.
- padding
- RSAEncryptionPadding
De opvulling.
Retouren
De versleutelde gegevens.
Uitzonderingen
De opvullingsmodus wordt niet ondersteund.
Opmerkingen
padding moet of RSAEncryptionPadding.Pkcs1 of RSAEncryptionPadding.OaepSHA1 zijn.