public static void Main(string[] args) { System.Console.WriteLine( typeof(object).AssemblyQualifiedName ); // http://www.drdobbs.com/windows/programming-public-key-cryptostreams-par/184416907 // X:\jsc.svn\examples\java\hybrid\JVMCLRRSACryptoServiceProviderExport\JVMCLRRSACryptoServiceProviderExport\Program.cs //var dwKeySize = (0x100 + 0x100) * 8; var dwKeySize = 128 * 8; var MaxData = (dwKeySize - 384) / 8 + 7; var RSA = new RSACryptoServiceProvider( dwKeySize: dwKeySize, parameters: new CspParameters { } ); RSAParameters p = RSA.ExportParameters(includePrivateParameters: false); var value = RSA.Encrypt( Encoding.UTF8.GetBytes("hello from server"), fOAEP: true //Encoding.UTF8.GetBytes("hello from server"), fOAEP: false ); var data = new MemoryStream(); var goo = new CryptoStream(data, new RSAEnCryptoTransform(RSA), CryptoStreamMode.Write); var text = Encoding.UTF8.GetBytes("hello".PadRight(8000) + "world"); goo.WriteAsync(text, 0, text.Length).Wait(); goo.FlushFinalBlock(); goo.FlushAsync().Wait(); var foo = new CryptoStream(data, new RSADeCryptoTransform(RSA), CryptoStreamMode.Read); //var buffer = new byte[100]; //var buffer = new byte[MaxData]; var buffer = new byte[0x1000]; var result = foo.Read(buffer, 0, buffer.Length); //var result = foo.ReadAsync(buffer, 0, buffer.Length).Result; CLRProgram.CLRMain(); }