We can encrypt AES key using RSAPKCS1KeyExchangeFormatter.CreateKeyExchange and RSACryptoServiceProvider.encrypt methods.
Approach 1:
RSAPKCS1KeyExchangeFormatter keyFormatter = new RSAPKCS1KeyExchangeFormatter(_publicKey);
byte[] keyEncrypted = keyFormatter.CreateKeyExchange(aesManaged.Key, aesManaged.GetType());
Appraoch 2:
var aKey = aesManaged.Key;
var b64aKey = Convert.ToBase64String(aKey);
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.ImportParameters(_publicKey.ExportParameters(false));
var bytesaKey = System.Text.Encoding.UTF8.GetBytes(b64aKey);
var aKeyEncrypted = csp.Encrypt(bytesaKey, false);
Here _publicKey is object of RSACryptoServiceProvider.
Can anyone help me to understand, what is the difference between these two ways?