示例#1
0
        public static string ExportRSAPublicKey(RSAParameters parameters)
        {
            MemoryStream memoryStream1 = new MemoryStream();

            using (StreamWriter streamWriter = new StreamWriter(memoryStream1))
            {
                using (MemoryStream memoryStream2 = new MemoryStream())
                {
                    BinaryWriter stream1 = new BinaryWriter(memoryStream2);
                    stream1.Write((byte)48);
                    using (MemoryStream memoryStream3 = new MemoryStream())
                    {
                        BinaryWriter stream2 = new BinaryWriter(memoryStream3);
                        UASecurity.EncodeIntBigEndian(stream2, new byte[1]);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Modulus);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        UASecurity.EncodeIntBigEndian(stream2, parameters.Exponent);
                        int length = (int)memoryStream3.Length;
                        UASecurity.EncodeLength(stream1, length);
                        stream1.Write(memoryStream3.ToArray(), 0, length);
                    }
                    char[] charArray = Convert.ToBase64String(memoryStream2.ToArray(), 0, (int)memoryStream2.Length).ToCharArray();
                    streamWriter.WriteLine("-----BEGIN RSA PUBLIC KEY-----");
                    for (int index = 0; index < charArray.Length; index += 64)
                    {
                        streamWriter.WriteLine(charArray, index, Math.Min(64, charArray.Length - index));
                    }

                    streamWriter.WriteLine("-----END RSA PUBLIC KEY-----");
                }
            }
            return(Encoding.ASCII.GetString(memoryStream1.ToArray()));
        }