static void Main(string[] args)
        {
            String filename = "AliceClient.exe.config";

            RemotingConfiguration.Configure(filename);

            //Create Bob remotely
            Bob.Bob bob = new Bob.Bob();
            System.Console.Out.WriteLine("Bob created remotely");

            //Create Locally Alice
            Alice.Alice alice = new Alice.Alice();
            System.Console.Out.WriteLine("Alice created locally");

            //let Alice create the session key and envelope it
            byte[] digitalEnvelope = alice.Envelope();
            System.Console.Out.WriteLine("Alice create envelope :" + digitalEnvelope);

            //send the enveloped session key to Bob
            bob.Envelope(digitalEnvelope);
            System.Console.Out.WriteLine("Digital Envelope send to Bob\n\n");


            System.Console.Out.WriteLine("Enter the message that alice should send to Bob.");
            System.Console.Out.WriteLine("To stop sending any mesasge just press <enter>:");
            do
            {
                System.Console.Out.Write("Message :");
                string plaintext = Console.ReadLine();
                if (plaintext.Length == 0)
                {
                    break;
                }

                //Alice will encrypt it with the session key that it exchanged with Bob
                byte[] ciphertextbyte = alice.Message(plaintext);

                //send the cipher text to Bob
                bob.Message(ciphertextbyte);
            } while (true);
        }
        static void Main(string[] args)
        {
            string xmlRSAKeyPair = "<RSAKeyValue><Modulus>22BoUo2P28KglLh8G5gyOPXHFYDjF3i+KTNoE3wiSj+egBzM44Y+Ap4eeNQaBPrSp7PmGrLQp6sjBF1817llvCqTnk18V+EdMsJ5hUT5SzEFwCcPqSDH9Ns1wM/hP541RCTe+E53mAnovVKPoS4en+SnCnp2Lxnne01B4an8PM0=</Modulus><Exponent>AQAB</Exponent><P>8jIknnZvylSfuJE/XIiWVAPmD1z6T7cu53rBGVyXmIVfmqqC20f6IISERd1cvhrOLc+5IIUYt5uPXW1LHkYjTw==</P><Q>5+FPfr2qHrdZprpL7qaJUTw3N5JnBYzG+lNC/ZEk7qVWddVCQjaKfE8D7M8sYeT5o+WnoW+CHh83daBRrx3HIw==</Q><DP>yPBLK2Ft7Dr7bOCs5fO4bSny5Ioqbpq3gnt427bTW0pEgIi5Gn8ECZiIOYKnoF2S87UkjdN/J04bytKTgSGFxw==</DP><DQ>0XK9+JBfIuGgtC4guk9pR5xpj+PI9MVlUeV1ZE7/miR0RXk9IUvcqU5CEFxODZrjN30QfoyXbpfp43DNd60hGw==</DQ><InverseQ>eZ0h/wsZEhwUcprax89t3VEZfuACP2R8IGmvlOPQ89clxAR/twbF4aSPwoEiFJ8v0fgoceRQ8BP7S3CowhcWFw==</InverseQ><D>AKtiph3Yeos1gj6t4kesn4/gc6hZCRFNQ0Ls5mJSmHdpPGraFTerqMZiwWukSK+bRPe/lAVHrbtP+Atw/heKv+7O9VIAZnADXXF4CnNAsrFSgRS+BHoShQytzF2kIJpJZfWZ9MYJfI2wquDWCJTCc1ZbdnEhtBohKMvWrP8fV+E=</D></RSAKeyValue>";

            // Create the CspParameters object
            CspParameters csp = new CspParameters();

            //Don't Set the key container name
            //let us use memory based container
            //csp.KeyContainerName = "Bob's Public Keys";

            //Set the CSP Provider Type PROV_RSA_FULL
            csp.ProviderType = 1;

            //Set the CSP Provider Name
            csp.ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0";

            // Create the RSA CSP passing CspParameters object
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);

            rsa.FromXmlString(xmlRSAKeyPair);

            System.Console.Out.Write("Is it Alice's m/c or Bob's m/c. Enter a for Alice and b for Bob :");
            int option = System.Console.In.Read();

            if (option == 'a')
            {
                Alice.Alice alice = new Alice.Alice();
                alice.SetBobPublicKey(rsa.ExportParameters(false));
            }
            else if (option == 'b')
            {
                Bob.Bob bob = new Bob.Bob();
                bob.SetBobKeyPair(rsa.ExportParameters(true));
            }
            else
            {
                System.Console.Out.WriteLine("Incorrect option. Bye");
            }
        }