You can have the public and private key pair generated for you :
public static void GenerateKeys(int keySize, out string publicKey, out string publicAndPrivateKey)
{
using (var provider = new RSACryptoServiceProvider(keySize))
{
publicKey = provider.ToXmlString(false);
publicAndPrivateKey = provider.ToXmlString(true);
}
}
The public key is sent to anywhere you want, you can share is. It's used as a key to encrypt stuff. The private key is held secret. Only the private key can be used to decrypt data.
Does this cover your question, of do you need more detail?