RSACryptoServiceProvider.Encrypt Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verschlüsselt Daten mit dem RSA-Algorithmus.
Überlädt
Encrypt(Byte[], Boolean) |
Verschlüsselt Daten mit dem RSA-Algorithmus. |
Encrypt(Byte[], RSAEncryptionPadding) |
Verschlüsselt Daten mit dem RSA-Algorithmus unter Verwendung der angegebenen Auffüllung. |
Encrypt(Byte[], Boolean)
Verschlüsselt Daten mit dem RSA-Algorithmus.
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()
Parameter
- rgb
- Byte[]
Die zu verschlüsselnden Daten.
- fOAEP
- Boolean
true
, um direkte RSA-Verschlüsselung mit OAEP auszuführen (nur auf einem Computer unter Windows XP oder höher verfügbar), andernfalls false
, wenn Auffüllung (Padding) gemäß PKCS#1 v1.5 verwendet wird.
Gibt zurück
Die verschlüsselten Daten.
Ausnahmen
Der Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) kann nicht abgerufen werden.
- oder -
Der rgb
-Parameter ist länger als zulässig.
rgb
ist null
.
Beispiele
Im folgenden Codebeispiel wird ein RSACryptoServiceProvider -Objekt mit dem Wert eines öffentlichen Schlüssels (gesendet von einer anderen Partei) initialisiert, mithilfe des Aes Algorithmus ein Sitzungsschlüssel generiert und anschließend der Sitzungsschlüssel mithilfe des RSACryptoServiceProvider -Objekts verschlüsselt. Bei Verwendung dieses Schemas könnte der Sitzungsschlüssel an den Besitzer des privaten RSA-Schlüssels zurückgesendet werden, und die beiden Parteien könnten den Sitzungsschlüssel verwenden, um verschlüsselte Daten auszutauschen.
#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
Hinweise
Die folgende Tabelle beschreibt die von verschiedenen Versionen von Microsoft Windows unterstützte Auffüllung und die maximale Länge von rgb
, die durch die verschiedenen Kombinationen von Betriebssystemen und Abstand zulässig ist.
Auffüllen | Maximale Länge des RGB-Parameters |
---|---|
OAEP-Abstand (PKCS#1 v2) | Modulus size -2 -2*hLen, wobei hLen die Größe des Hashs ist. |
Direkte Verschlüsselung (PKCS#1 v1.5) | Modulusgröße : 11. (11 Byte ist die mindest mögliche Auffüllung.) |
Verwenden Sie Decrypt , um die Ergebnisse dieser Methode zu entschlüsseln.
Weitere Informationen
Gilt für:
Encrypt(Byte[], RSAEncryptionPadding)
Verschlüsselt Daten mit dem RSA-Algorithmus unter Verwendung der angegebenen Auffüllung.
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()
Parameter
- data
- Byte[]
Die zu verschlüsselnden Daten.
- padding
- RSAEncryptionPadding
Der Paddingmodus.
Gibt zurück
Die verschlüsselten Daten.
Ausnahmen
Der Paddingmodus wird nicht unterstützt.
Hinweise
padding
muss entweder RSAEncryptionPadding.Pkcs1 oder RSAEncryptionPadding.OaepSHA1sein.